将Unicode转义序列转换为其对应的字符

时间:2017-12-14 16:59:03

标签: ios objective-c unicode nsstring escaping

我从服务器收到一个字符串,它在代码中有特殊字符。这是一个例子:

  

“El usuario o las contrase \ UOOOOfffda no son v \ UOOOOfffdlidos”

第一个应该是“ñ”而第二个应该是“á”

我知道这并不复杂,但我找不到答案。如何获取格式正确的特殊字符的字符串?

2 个答案:

答案 0 :(得分:3)

Unicode U + FFFD(在您的字符串中,显示为UTF-32 \U0000fffd)是替换字符“ ”。当系统遇到无法识别的字符时,它通常用字符串替换。

此字符实际上不应出现在字符串数据中,因为它的目的是指示显示或解释字符串时出错。由于您的服务器正在向您发送ñ和á的字符,因此无法检索正确的字符。

你是如何“收到”这个字符串的?可能是您正在错误地访问服务器,因此它没有向您发送未修改的字符串。

答案 1 :(得分:1)

这些字符的Unicode应如下所示:

@"accented-a is \u00f1, and tilda-n is \u00e1"

但不清楚你从服务器获得的内容是否有意义。 objective-c literal必须有一个小写字母" u"仅跟随有效的十六进制数字(0-9和a-f)。我没有看到一种转变,它会改变你所期望的文字。

一旦正确格式化了字符,内置类就可以正常工作,例如,将字符串分配给标签' text属性将向用户显示一个漂亮的字形。