uak*_*ght 2 unicode json swift
在 JSON 数据文件中,我有一个像这样的 unicode 字符:
{
”myUnicodeCharacter”: ”\\u{25a1}”
}
Run Code Online (Sandbox Code Playgroud)
我知道如何从 JSON 文件中读取数据。当它包含如上表示的字符时会出现问题。
我将它读入一个字符串变量 myUnicodeCharacterString,它的值是“\u{25a1}”。顺便说一下,我不能在 JSON 数据文件中使用单个斜杠,因为在这种情况下,它无法将文件中的数据识别为正确的 JSON 对象,返回 nil。
然而,当该值被分配给用于显示它的东西时,它不会被编码到它的图形表示中,例如一个 SKLabelNode:
mySKLabelNode.Text = myUnicodeCharacterString // displays ”\u{25a1}” and not a hollow square
Run Code Online (Sandbox Code Playgroud)
问题归结为:
// A: direct approach, does works
let unicodeValueByValue = UnicodeScalar("\u{25a1}") // ”9633”
let c1 = Character(unicodeValueByValue) // ”a hollow square”
// B: indirect approach, this does not work
let myUnicodeString = "\u{25a1}"
let unicodeValueByVariable = UnicodeScalar(myUnicodeString) // Error: cannot find an initialiser
let c2 = Character(unicodeValueByVariable)
Run Code Online (Sandbox Code Playgroud)
那么,如果代码中没有直接给出格式为 "\u{xxxx}" 的 unicode 字符,我该如何显示?
更好的方法是对\uNNNNJSON 中的 Unicode 字符使用正确的转义序列(有关详细信息,请参阅http://json.org)。这由 自动处理NSJSONSerialization,您不必转换十六进制代码。
在您的情况下,JSON 数据应该是
{
"myUnicodeCharacter" : "\u25a1"
}
这是一个完整的独立示例:
let jsonString = "{ \"myUnicodeCharacter\" : \"\\u25a1\"}"
println(jsonString)
// { "myUnicodeCharacter" : "\u25a1"}
let dict = NSJSONSerialization.JSONObjectWithData(jsonString.dataUsingEncoding(NSUTF8StringEncoding)!,
options: nil, error: nil) as [String : String]
let myUnicodeCharacterString = dict["myUnicodeCharacter"]!
println(myUnicodeCharacterString)
// ?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1952 次 |
| 最近记录: |