萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> 程式語言綜合

Python 簡單安全截取中文字串:Unicode 切片法

核心原則

永遠在 Unicode 字串上切片,不要在位元組串上切片。

Python 2 寫法

# -*- coding: utf-8 -*-
s = u'中文截取'        # Unicode 物件
result = s[:3]          # 直接切片 -> u'中文截'
print(result.encode('utf-8'))  # 輸出 UTF-8 位元組

Python 3 寫法 (更簡單)

s = '中文截取'          # 預設即 Unicode str
result = s[:3]          # '中文截'
print(result)           # 直接印出

為什麼這樣做?

  • Unicode 字串以「字元」為單位索引,中英文皆為 1
  • UTF-8 位元組串中文佔 3-4 bytes,直接切片極易截斷字元
  • 內部處理用 Unicode,只在 I/O 邊界 encode/decode

常見錯誤

# 錯誤:對 UTF-8 bytes 切片
raw = '中文'.encode('utf-8')
print(raw[:3])  # b'\xe4\xb8\xad' -> 只剩半個字,印出亂碼

總結

  1. 讀入 → .decode('utf-8') (Py2) / 直接用 str (Py3)
  2. 切片 → s[:n]
  3. 輸出 → .encode('utf-8') (Py2) / 直接寫入 (Py3 open encoding='utf-8')

三步驟,零亂碼。

copyright © 萬盛學電腦網 all rights reserved