首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从MySQL到SQLite损坏的UTF-8

从MySQL到SQLite损坏的UTF-8
EN

Stack Overflow用户
提问于 2010-09-28 19:49:12
回答 3查看 1.7K关注 0票数 1

我正在将从MySQL 5编写的PHP应用程序移植到SQLite 3,两者的文本编码都是UTF-8 (适用于所有字段、表和数据库)。我在传输一个有特殊字符的地理数据库时遇到了麻烦。

mb_detect_encoding()检测到两者都是返回UTF-8数据.

例如,

原始输出:

MySQL (正确):Dārāb,伊朗

SQLite (不正确):d r,伊朗

JSON编码:

MySQL (正确):d\0101r\u0101b,伊朗

SQLite (不正确):D\u00c4\u0081r\u00c4\u0081b,伊朗

修复问题的是什么:

代码语言:javascript
复制
$sqlite_output = utf8_encode($sqlite_output);
$sqlite_output = utf8_decode($sqlite_output);

我想有一种修复SQLite数据库的方法。提前谢谢你。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-29 00:26:49

谢谢你的建议和意见。不幸的是,无论我选择哪种配置,它都不会采取。最后,我简单地启动了两个PDO对象,并使用while循环一次插入一行。(我使用了mysqldump--no-data选项来获得结构,并手动修改了结构。)

在256 my的CentOS框中插入相当于9.4MB数据的10,000行大约需要10分钟。(因此,如果您所处的环境是共享的,请注意最大的执行时间。)SQLite数据库现在返回正确的Unicode数据。

自我注意:编写工作代码要比找到推荐的解决方案容易得多。

票数 0
EN

Stack Overflow用户

发布于 2010-09-28 19:54:17

您可能需要再次将数据从MySQL传输到SQLite。我不认为您可以预见恢复到正确的编码,因为它似乎SQLite解释utf8 8-输入为非utf8 8或签证反之亦然,当数据第一次到达,因此没有以适当的格式存储它。

因此,再次尝试传输,同时确保MySQL到SQLite之间的整个数据链都知道utf-8编码。

票数 0
EN

Stack Overflow用户

发布于 2010-10-03 19:57:27

默认的PHP发行版以ISO-8859-1编码模式构建libsqlite。然而,这是一个错误的名称;它不是处理ISO-8859-1,而是根据您当前用于字符串比较和排序排序的地区设置来操作。所以,你应该把它看作是‘8位’,而不是ISO-8859-1。

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

https://stackoverflow.com/questions/3816489

复制
相关文章

相似问题

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