0

我正在尝试替换 NSString 中的一些转义 unicode。我对 CFString 函数没有任何运气,所以我想我会尝试正则表达式。

这是正则表达式

NSRegularExpression *regexUnicode2 = [NSRegularExpression regularExpressionWithPattern:@"(\\u([0-9A-Fa-f]){4}){2}" options:0 error:&error];

然后我尝试使用它来匹配

NSArray *twoEscapeArray = [regexUnicode2 matchesInString:selfCopy options:0 range:NSMakeRange(0, self.length)];

selfCopy 是输入字符串的可变副本。这是该字符串的一部分:

muestran al p\u00c3\u00bablico las encuadernaciones de las colecciones reales adem\u00c3\u00a1s de otros objetos hist\u00c3\u00b3ricos en relaci\u00c3\u00b3n con \u00c3\u00a9stas。

La muestra, thinkada a nivel mundial como uno de los conjuntos ligatorios hist\u00c3\u00b3ricos m\u00c3\u00a1s importantes, se completa con obras de arte como armas, alfombras y relojes。Estos son objetos que ayudan a entender la encuadernaci\u00c3\u00b3n como elemento basic de la cultura de corte。

Los fodos de la Real Biblioteca, del Real Monasterio de San Lorenzo de El Escorial, del Monasterio de Santa Mar\u00c3\u00ada la Real de las Huelgas de Burgos, del Monasterio de las

如果没有适当的转换,当我将这些转义的 unicode 对放入 UIWebView 时,它们将被视为单个字符(每对产生两个字符)。

这就是原始 JSON 数据的编码方式,我没有任何运气将其正确转换为拉丁字符。

无论如何,问题在于twoEscapeArray匹配尝试后数组为零。我不确定为什么。

4

1 回答 1

0

你的意思\u00c3\u00ba是正在转换为ú?这对我来说似乎是正确的行为。真正的问题是那些 Unicode 转义符是如何进入其中的。看起来文本在某些时候被错误解码(可能是在创建 NSString 时?),字母的两字节 UTF-8 编码应该是什么ú(U + 00FA,带有 Acute 的拉丁小写字母 U)是解码为两个字符。

尝试回到创建 NSString 的位置,这次指定 UTF-8 作为编码。

于 2012-05-02T08:04:40.293 回答