我对编码/解码的理解不是最好的,如果有任何令人困惑的地方,我深表歉意:
我正在修改一个 Javascript 应用程序。它搜索索引文件以查找单词的索引,然后使用其索引访问字典文件中的单词条目。所以如果这个词的索引是 100,那么这个词的定义就会出现在 dict[100] 处。这些文件在 Javascript 应用程序中使用 response.text() 加载到变量中。这似乎将 4 字节 utf-8 编码字符呈现为两个单独的字符。例如:? 和 ? 是 utf-8 中的四个字节,所以我认为它们显示为 ��(就像它们在 cmd 中所做的那样)。当前索引说明了这一点,但由于我正在更新字典中的条目,因此我需要更新索引。 Python 中有没有办法将 4 字节 utf-8 编码字符解码为两个字符?我目前的解决方案是在 Python 中读取 old_index 和 old_dict 文件,并在索引找不到条目时手动添加一个额外的字符。我怀疑我需要切换语言以获得更优雅的解决方案。
编辑:我想解释我的目标让这变得混乱。问题的关键是我试图找到一种方法来计算 4 字节 utf-8 编码字符两次。这可能可以通过逐个字符并检查其在 utf-8 中的编码大小来完成。
with open(r"data\dict.txt","r",encoding="utf-8") as f:
dict = f.read()
for char in dict:
byteArray = char.encode("utf-8")
if len(byteArray) == 4:
idx += 2
else:
idx += 1