Jim*_*Jim 3 unicode cocoa-touch objective-c normalization unicode-normalization
我一直在讨论这个问题,从服务器返回的JSON UTF-8字符串包含这样的unicode对:
\ u00c3\u00bc
它被渲染为两个单独的角色.但是,它应该呈现为单个字符.根据我在此链接中找到的表格,这里有一些例子:
0xc3,0xa0 agrave
0xc3,0xa1 aacute
0xc3,0xa2 acircumflex
0xc3,0xa3 atilde
0xc3,0xa4 adiaeresis
0xc3,0xa5 aring
0xc3,0xa6 ae
0xc3,0xa7 ccedilla
0xc3,0xa8 egrave
0xc3,0xa9 eacute
0xc3,0xaa ecircumflex
0xc3,0xab ediaeresis
0xc3,0xac igrave
0xc3,0xad iacute
0xc3,0xae icircumflex
0xc3,0xaf idiaeresis
0xc3,0xb0 eth
0xc3,0xb1 ntilde
0xc3,0xb2 ograve
0xc3,0xb3 oacute
Run Code Online (Sandbox Code Playgroud)
(我在数据中看到这种情况的每种情况都会转换为适当的单个字符.)
其中许多显然是像'\ uxxxx'这样的单线形式的"别名",但我以这种方式接收它们作为双重线.原始数据字节显示这实际上是从服务器传输的方式.
(一旦我以UTF-8收到它们,我没有理由将它们保留在内存中的本地表示中.)
我不知道该怎么称呼它,所以我很难找到很多关于它的信息,而且我无法就这个问题进行清楚的沟通.我想知道为什么它被使用,我在哪里可以找到将其转换为我的UIWebView可以正确呈现的内容的代码,但知道它的名称是我的问题.
我的问题是这个双重或配对形式叫什么?
(如果它有用,我在Objective-C和CocoaTouch中工作.)
该符号\'\\u00c3\\u00bc\'表示两个字符序列 \xe2\x80\x9c\xc3\x83\xc2\xbc\xe2\x80\x9d,使用正常的 JavaScript 转义符号:在字符串文字中,\'\\uhhhh\'代表字符(或者,从技术上讲, Unicode 代码单元),Unicode 编号为 hhhh(十六进制)。
这实际上是字符数据转换错误的明确标志。当 UTF-8 编码数据被误解为 ISO-8859-1 编码(或某些其他 8 位编码)时,此类错误经常发生。
\n\n真实的、未损坏的数据可能包含带元音变音的 u、\xc3\xbc、U+00FC,其中 UTF\xe2\x88\x928 编码由字节 c3 和 bc 组成,请参阅\n http://www.fileformat.info /info/unicode/char/fc/index.htm
\n\n您所指的文档http://cpansearch.perl.org/src/JANPAZ/Cstools-3.42/Cz/Cstocs/enc/utf8.enc似乎显示字符的 UTF-8 编码表示形式,以文本格式呈现将字节显示为十六进制数。
\n\u00c3\u00bc
Run Code Online (Sandbox Code Playgroud)
它被渲染为两个单独的角色.
这确实意味着两个角色ü.如果您希望看到ü,那么您所拥有的是进一步上游的错误处理,无论是在JSON生成器中还是在输入它的输入中.有人将一系列字节解码为ISO-8859-1,他们应该使用UTF-8.
您可以通过读取JSON,编码为ISO-8859-1,然后解码为UTF-8来解决此问题.但是,这将裂伤任何实际的正确的输入,这是不可能的从实例讲述了"错误"的字符集是否真的是ISO-8859-1或Windows代码页1252.可能是因为存在.
但是,您确实需要解决问题的根源,而不是尝试解决问题.是您的服务器生成JSON吗?数据来自哪里?因为\u00c3\u00bc意思ü是明确不正确.
| 归档时间: |
|
| 查看次数: |
1046 次 |
| 最近记录: |