我目前正在尝试解决我的作业中的一个问题,该问题询问为什么将相似的字符串检查为不相同。
问题如下:
在计算机程序的代码中,声明了两个字符串变量。当程序将它们各自的值打印到计算机屏幕上时,两者都显示为字符串“ĝ”。但是,当检查两个变量的字符串等效性时,程序将返回false(即false表示两个字符串均被视为不相同)。
这些看似矛盾的结果最有可能是什么原因?假设计算机程序使用了UTF-8编码。
该问题希望说明为什么会出现这种矛盾的结果以及在这种情况下UTF-8编码如何工作
我目前的赌注是,还有另一个看起来与“ĝ”相似的字符,但是具有不同的unicode表示形式,但是我也不完全确定。
答案 0 :(得分:3)
Unicode具有组合字符,因此您可以:
U+011D LATIN SMALL LETTER G WITH CIRCUMFLEX
或:
U+0067 LATIN SMALL LETTER G
U+0302 COMBINING CIRCUMFLEX ACCENT
在视觉上,这些将打印相同的内容(Python代码示例):
>>> print('\u011d \u0067\u0302')
ĝ ĝ
FYI,采用UTF-8编码,相对于C4 9D
是十六进制的字节。{p>