PHP Sax Parser和UTF-8

时间:2011-11-23 22:54:18

标签: php utf-8 saxparser

不幸的是,我遇到了php sax解析器和utf-8编码的麻烦。

案例:

我有一个用utf-8编码的xml文件。使用标准的php sax解析器解析该文件。数据存储在一些容器对象中并插入到mysql数据库中。不幸的是,一些角色在数据库中看起来很奇怪(主要是德语变音符号)。例如Gürtel看起来像Gürtel。

以下代码片段显示了如何实例化解析器:

$saxParser = xml_parser_create("UTF-8");

这是否足以解析utf-8文件?如果是的话,我错过了什么?插入时有些特殊的数据库内容?

提前致谢。

1 个答案:

答案 0 :(得分:1)

逐步检查编码以找到无效代码:

  1. 打印从XML
  2. 中检索的值
  3. 打印出您构建的SQL语句
  4. 打印值时,请确保浏览器使用正确的编码读取输出。

    您必须确保每个组件都使用正确的编码:

    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