不幸的是,我遇到了php sax解析器和utf-8编码的麻烦。
案例:
我有一个用utf-8编码的xml文件。使用标准的php sax解析器解析该文件。数据存储在一些容器对象中并插入到mysql数据库中。不幸的是,一些角色在数据库中看起来很奇怪(主要是德语变音符号)。例如Gürtel看起来像Gürtel。
以下代码片段显示了如何实例化解析器:
$saxParser = xml_parser_create("UTF-8");
这是否足以解析utf-8文件?如果是的话,我错过了什么?插入时有些特殊的数据库内容?
提前致谢。
答案 0 :(得分:1)
逐步检查编码以找到无效代码:
打印值时,请确保浏览器使用正确的编码读取输出。
您必须确保每个组件都使用正确的编码:
PHP脚本
使用编码设置将PHP保存为UTF-8 而不 BOM,因为这可能会导致问题。使用UTF-8字符串时仅使用multibyte string functions。
XML文件
XML文件以。开头
<?xml version="1.0" encoding="UTF-8" ?>
并使用编码设置为UTF-8正确保存文件。
SQL列(整理)
VARCHAR(length) [CHARACTER SET charset_name] [COLLATE collation_name]
MySQL服务器和PHP脚本之间的通信
打开与MySQL服务器的连接后立即运行此命令:
SET NAMES 'UTF8'
SET NAMES表示客户端将用于发送SQL的字符集 语句到服务器。 http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html