【问题标题】:MySQL and PHP unicode problemsMySQL 和 PHP 的 unicode 问题
【发布时间】:2010-09-26 05:38:03
【问题描述】:

我有以下从微软访问文件中导出的 UTF-8 文件

http://www.yousendit.com/download/TTZtT214SU84Q1FLSkE9PQ

我已确保我的 mysql 数据库是 utf8 的状态;客户端和服务器的命令。我使用以下命令将上述文件插入到我的数据库中:

LOAD DATA LOCAL INFILE 'tblAuction1.txt' INTO TABLE Auctions FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\';

一切似乎都还不错,据我所知,Unicode 字符显示在 html 中。数据库字段的直接内容在这里:

http://www.nomorepasting.com/getpaste.php?pasteid=22622

但是显示的结果是 html 代码:

http://www.nomorepasting.com/getpaste.php?pasteid=22617

显示为

费用清单

1.00 
<\/OBJECT>
');\n\t\t<\/SCRIPT>\n\t\t

在浏览器中

我用来展示的代码是:

http://www.nomorepasting.com/getpaste.php?pasteid=22618

在我更改编码之前工作正常。

作为一个附带问题,我想知道为什么从制表符分隔更改为分号分隔,并且封闭字段会使导出文件的大小减少一半。制表符是单个字符,就像 ;字符,并且添加引号括起来应该增加了大小?

【问题讨论】:

    标签: php javascript mysql html ajax


    【解决方案1】:

    根据网络服务器的配置,您可能需要将编码显式设置为“text/html; charset=UTF-8”,header():

    header('Content-Type: text/html; charset=UTF-8');
    

    这应该足以解决您的特定问题,但是 - 如果您还打算操作字符串 - 请注意 PHP 包含许多不安全地用于多字节字符的函数:您至少应该正确配置 @ 987654321@.

    我的书签中也有这个cheatsheet,我认为它仍然相关。

    【讨论】:

    • 这似乎没有解决任何问题,可能是数据库有问题吗?这似乎是要传递给 document.write 的 html 的问题,并且在某处未关闭的标签。
    • 未封闭的标签与 UTF-8 编码正交...虽然您在正确显示非 ASCII 字符时遇到了问题。
    猜你喜欢
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    • 2012-07-15
    • 2010-10-26
    相关资源
    最近更新 更多