iphone sdk \ Uxxx到utf-8

时间:2012-12-02 12:17:34

标签: php iphone mysql ios5 utf-8

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

问题是,当服务器收到字符串时,它们将以格式化的Unicode格式发送,例如: \ U00fc应该是'ü'。 包含'\ U00fc'的字符串正确存储在数据库中。但是当我读到数据库时,我只得到了'U00fc',它就消失了......

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

我在PHP中找不到任何执行此操作的函数...我很确定这样的东西必须存在于某个地方,而不是我必须重新实现整个unicode表...

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

1 个答案:

答案 0 :(得分:2)

如果你的输入坚持大写\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