如何用PHP将é类Unicode转义字符转换为正常字符
解决Cloud Translate API返回的Unicode转义字符问题
你遇到的是JSON格式的Unicode转义序列(\u00e9这类),当前代码里的正则是针对%uXXXX格式的URL编码,所以对这种转义无效。以下是几种PHP的解决方法:
方法一:利用json_decode直接解码(推荐)
这类\uXXXX转义是JSON标准的语法,PHP内置的json_decode可以直接处理:
// 示例字符串 $translatedText = 'votre \u00e9v\u00e9nement une exp\u00e9rience unique.'; // 把字符串包裹成双引号的JSON字符串,再解码 $fixedText = json_decode('"' . $translatedText . '"');
这个方法简单可靠,能处理所有标准的Unicode转义,包括多字节的\uXXXX\uXXXX组合(比如emoji)。
方法二:处理含双引号的特殊情况
如果翻译后的字符串里包含双引号,需要先转义双引号再解码:
$translatedText = 'votre "événement" \u00e9v\u00e9nement'; // 转义字符串中的双引号 $escapedText = str_replace('"', '\\"', $translatedText); $fixedText = json_decode('"' . $escapedText . '"');
结合你的现有代码修改
把代码中处理转义的部分替换成:
$text_translated = $translate->translate($value, [ 'source' => $source, 'target' => $target, 'format' => 'text' ])['text']; // 处理Unicode转义 $escapedText = str_replace('"', '\\"', $text_translated); $fixedText = json_decode('"' . $escapedText . '"'); $newArray[$key] = $fixedText;
这样就能自动把所有\uXXXX转义转换成对应的正常字符。
内容的提问来源于stack exchange,提问作者gabogabans
相关产品推荐
相关产品推荐

