gpt4 book ai didi

json - 如何在 Swift 中间接显示给定的 unicode 字符?

转载 作者:可可西里 更新时间:2023-11-01 00:53:19 24 4
gpt4 key购买 nike

在一个 JSON 数据文件中,我有一个这样的 unicode 字符:

{
”myUnicodeCharacter”: ”\\u{25a1}”
}

我知道如何从 JSON 文件中读取数据。当它包含如上所示的字符时,就会出现问题。

我将它读入一个字符串变量 myUnicodeCharacterString,它获得值“\u{25a1}”。顺便说一句,我不能在 JSON 数据文件中使用单斜杠,因为在这种情况下它无法将文件中的数据识别为正确的 JSON 对象,并返回 nil。

但是,当值被分配给用于显示它的东西时,例如 SKLabelNode:

mySKLabelNode.Text = myUnicodeCharacterString // displays ”\u{25a1}” and not a hollow square

问题归结为:

// 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)

那么,如果没有直接在代码中给出,我该如何显示格式为“\u{xxxx}”的unicode字符呢?

最佳答案

更好的方法是使用正确的 \uNNNN 转义序列用于 JSON 中的 Unicode 字符(有关详细信息,请参阅 http://json.org)。这是由 NSJSONSerialization 自动处理的,而你不需要必须转换十六进制代码。

在您的情况下,JSON 数据应该是

{    "myUnicodeCharacter" : "\u25a1"}

Here is a full self-contained example:

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)
// □

关于json - 如何在 Swift 中间接显示给定的 unicode 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29004561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com