iphone sdk \ Uxxx到utf-8

问题描述:

我正在开发一个iPhone应用程序,我通过SOAP将用户信息发送到我的服务器,我将它们作为UTF-8字符串存储在我的数据库中。iphone sdk Uxxx到utf-8

问题是,当服务器收到这些字符串时,它们将以Unicode格式发送,例如, \ u00fc这应该是'ü'。 包含'\ U00fc'的字符串正确存储在数据库中。但是当我读取数据库时,我只能得到'U00fc'\'已经不存在了......

但是为了更好的阅读选项,我实际上想将'\ U00fc'转换成'ü'存储到数据库然后在阅读数据库时我会将它转换回iPhone。

我只是无法在PHP中,这是否找到任何功能...我敢肯定这样的事情必须存在冥冥中早已不是说我要重新实现整个Unicode编码表...

如果你知道任何建议,如果你能帮助我,我会很高兴。

+0

你似乎发送JSON数据。使用'json_decode()'将这些字符转换回合适的UTF-8字符 –

+0

不,它不是json ...当我发送字符串Müller时,它实际上发送了M \ U00fcller。 iOS正在将ü翻译成\ U00fc,因为此表显示了以下标志:http://javathreads.de/2008/10/die-wichtigsten-utf-8unicode-sonderzeichen-fuer-die-entwicklung-mit-facelets/ – schurtertom

+1

HI Pekka ,感谢提示...实际上字符串不是json编码,但我尝试使用json_decode()函数,当我使用:json_decode(''M \ u00fcller''),但问题是,我得到:M \ U00fcller (大U)...当我然后使用:json_decode(''M \ U00fcller'')我得到空...如果我使用:strtolower('M \ U00fcller')它会工作,但然后整个字符串是小写... – schurtertom

如果输入的大写\U坚持,你可以用这个解决它:

<?php 
header("Content-Type: text/plain; charset=UTF-8"); 

function fixEscapeSequence($str) { 
    return preg_replace('/\\\U([a-fA-F0-9]{4})/', '\u$1', $str); 
} 

echo json_decode(fixEscapeSequence('"M\U00FCller"')); 
//Müller 

或者全部包裹在其中:

function uToUTF8($str) { 
    $needle = array("\\", '"'); 
    $repl = array("\\\\", '\\"'); 
    $str = str_replace($needle, $repl, $str); 
    return json_decode(preg_replace('/\\\\\\\U([a-f0-9]{4})/i', '\u$1', "\"{$str}\"")); 
} 



echo uToUTF8('M\u00FCller'); 
//Müller 
echo uToUTF8('M\U00FCller'); 
//Müller 
+0

嗨Esailija,这就是我认为,以及试图得到正则表达式..但不能使它的工作。非常感谢您的建议!我认为这正是我必须要做的。欢呼声 – schurtertom

+0

非常感谢你的解决方案。我的问题是,我们的网站是在PHP 5.2上,所以我不能使用JSON_UNESCAPED_UNICODE。无论如何,真棒。再次感谢! – kaha