我正在尝试在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 \ u00clic \ u00bablico las encuadernaciones de las colecciones reales adem \ u00c3 \ u00a1s de otros objetos hist \ u00c3 \ u00b3ricos en 他们是一个不错的选择。
La muestra, 在世界各地的一个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 de la cultura de corte。
Los fondos 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
如果没有正确的转换,当我将它们放入UIWebView时,这些转义的unicode对被视为单个字符(每对产生两个字符)。
这是原始JSON数据的编码方式,我没有任何运气可以让它正确转换为拉丁字符。
无论如何,问题是匹配尝试后数组twoEscapeArray
为零。我不确定为什么。
答案 0 :(得分:0)
您的意思是\u00c3\u00ba
正在转换为ú
?这看起来对我来说是正确的行为。真正的问题是那些Unicode转义是如何进入的。看起来文本在某些时候被错误地解码了(可能是在创建NSString的时候?),应该是字母ú
的两字节UTF-8编码(U + 00FA,拉丁文小写字母) U With Acute)被解码为两个字符。
尝试返回创建NSString的位置,这次指定UTF-8作为编码。