我正在尝试在obj-c和php上将字符串转换为UTF8。 我得到了不同的结果:
"\xd7\x91\xd7\x93\xd7\x99\xd7\xa7\xd7\x94" //Obj-C
"\u05d1\u05d3\u05d9\u05e7\u05d4" //PHP
Obj-C代码:
const char *cData = [@"בדיקה" cStringUsingEncoding:NSUTF8StringEncoding]
PHP代码:
utf8_encode('בדיקה')
这种差异打破了我的哈希算法。 如何使两个字符串编码方式相同?我应该更改obj-c \ php吗?
答案 0 :(得分:2)
如果你继续寻找,你会发现PHP和Objective-C实际上是相同的。您遇到的“问题”是,虽然PHP使用Unicode转义(\u
),但Objective-C使用直接字节十六进制转义(\x
)。那些只是字符串的直观表示,内存中的字节实际上是相同的。
如果您的哈希算法正确处理字节,则不应该看到差异。
答案 1 :(得分:1)
你在PHP上使用什么编码?看起来你正在生成一个UTF-16字符串。
尝试utf8_encode(),看看是否能提供更好的结果。