Ios 是否将UTF-16数字转换为UTF-8?
我有一个iPad应用程序,用户可以在文本字段中输入电话号码。有时电话号码是用UTF-16输入的(日本人有时用这种方式输入电话号码),但大多数情况下是用UTF-8输入的 我的问题分为三个部分:Ios 是否将UTF-16数字转换为UTF-8?,ios,objective-c,utf-8,utf-16,Ios,Objective C,Utf 8,Utf 16,我有一个iPad应用程序,用户可以在文本字段中输入电话号码。有时电话号码是用UTF-16输入的(日本人有时用这种方式输入电话号码),但大多数情况下是用UTF-8输入的 我的问题分为三个部分: 有没有办法知道号码是UTF-8还是UTF-16 如果数字是数字,如何从UTF-16转换为UTF-8 在没有发现任何东西的情况下,有人知道这方面的一篇好论文吗?(在iOS中来回转换) 所有Unicode编码都可以毫无问题地在两者之间转换。UTF-8只是UTF-16的另一种编码。东亚用户比UTF-8更频繁地使
- 有没有办法知道号码是UTF-8还是UTF-16
- 如果数字是数字,如何从UTF-16转换为UTF-8
- 在没有发现任何东西的情况下,有人知道这方面的一篇好论文吗?(在iOS中来回转换)
NSString
不公开此实现细节。你不应该需要它。(如果这样做,很可能是设计错误。)
如果数字是数字,如何从UTF-16转换为UTF-8
(数字是数值的,还是我遗漏了什么?)那么,您可以使用NSString
作为一种“桥梁”,在不同编码的C字符串(字符数组)之间进行转换:
unichar utf16_string[] = // some UTF-16 C string
NSString *tmp = [[NSString alloc] initWithBytes:utf16_string
length:sizeof(utf16_string) / sizeof(utf16_string[0])
encoding:NSUTF16StringEncoding
];
const char *utf8_string = [tmp UTF8String];
在没有发现任何东西的情况下,有人知道这方面的一篇好论文吗
如果用户在
UITextField
中输入数字,则您有一个NSString
。用户如何以不同的编码输入此字符串?那没有任何意义。您可以使用所需的任何编码将NSString
转换为NSData
,但用户在输入文本字段期间无法控制编码。您所说的“在UTF-16或UTF-8中输入数字”是什么意思?@MartinR:TestStreams编码的UTF-16每个码点至少使用2个字节,然而UTF-8可以低至每个代码点一个字节。@DatenWalf:我知道UTF-8和UTF-16,但我不知道这如何适用于使用NSString
(rmaddy在他的评论中也提到了这一点)。我理解其中的区别。。。我刚从为应用程序提供规范的人那里得知这一点……我相信,libiconv
默认安装在iOS上,至少在工具链的sysroot中有一个iconv.dylib文件。另外,正如我所描述的,NSString
本身不能处理转换吗?