首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将"\uxxxx“格式的utf8字符串转换为latin1?

如何将"\uxxxx“格式的utf8字符串转换为latin1?
EN

Stack Overflow用户
提问于 2013-01-28 17:31:20
回答 2查看 1.7K关注 0票数 0

我必须将一个JSON格式的字符串保存到我的latin1 mysql中。为了能够使用uft8_encode函数,我必须将整个数组转换为utf8,然后将结果字符串转换回latin1。

因此,我尝试了以下代码:

代码语言:javascript
代码运行次数:0
运行
复制
    // $context is equal to array('produção' => 'homologação'), for testing purposes
    $context = Helper::getHelper('Util')->encodeUtf8($context); // Encodes key and value with utf8_encode

    $context = json_encode($context); // {"produ\u00e7\u00e3o":"homologa\u00e7\u00e3o"}

    $context = utf8_decode($context); // Still {"produ\u00e7\u00e3o":"homologa\u00e7\u00e3o"}

但正如你所看到的,它不像我预期的那样起作用。我也尝试过使用Zend_Json库,但它也不适用于这些字符。

以简化:需要将latin1数组编码为JSON,然后将该JSON插入到latin1 db中。

有人知道我是怎么做到的吗?一个更好的方法来完成同样的结果,也将是非常感谢的。

EN

回答 2

Stack Overflow用户

发布于 2013-01-28 17:38:32

您正在对一些不是utf8_decode的东西执行utf8

JSON编码的内容总是ASCII,所以执行utf8_decode不会有任何作用(ASCII是UTF8的子集)。您必须首先解码JSON。

正确的顺序是:

代码语言:javascript
代码运行次数:0
运行
复制
$string = "some UTF8 string";   // utf8
$json = json_encode($string); // json
$utf8 = json_decode($json); // utf8
$latin = utf8_decode($utf8); // latin1

当然,这里的JSON步骤是不必要的,但我猜您正在使用JSON来传输或存储数据(这是个好主意!)

既然你更新了问题:

JSON是ASCII,因此将其存储在latin1编码的字段中应该没有问题。

如果希望将utf8编码的数据以latin1的形式发送给客户端,则需要在将其放入数据库之前或在取出数据之后进行一些编码转换。

我的观点是,您不需要做任何技巧来将JSON存储在数据库中。这不应成为问题的一部分。在这一点上,我仍然不清楚你想要什么。声明:

为了简化:我需要将latin1数组编码为JSON,然后将该JSON插入到latin1 db中。

与输入为utf8编码的JSON的代码示例不押韵。

票数 2
EN

Stack Overflow用户

发布于 2013-01-28 18:19:26

我有一个latin1编码数组。我必须将该数组编码为JSON,然后将该JSON存储在我的latin1 db中。我的第一个问题是json_encode只接受utf8编码的数组,所以我不得不将整个数组编码为utf8。

但真正的问题是我的分贝。当我插入JSON时,它使用"\uxxxx“序列插入文字字符串。我最初以为那些只是utf8字符,所以我试着对它们进行解码。很明显我错了。

@Frits解释说json_encode的结果是纯ascii,这给了我很多帮助,让我看到了不同的方向,我找到了解决问题的方法。

因为"\uxxxx“序列只是ascii,我真正需要的是用适当的utf8字符替换这些序列,然后解码整个字符串。

在这里解释得很好:How to decode Unicode escape sequences like "\u00ed" to proper UTF-8 encoded characters?

我对这个解决方案特别不满意,但我有最后期限。所以,如果有人有更好的方法,请和我分享。

我希望这能帮助一些处于同样情况的人。尽管它很丑,但它还是有效的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14567741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档