【发布时间】:2018-07-25 10:44:51
【问题描述】:
我在 MySQL 中有一个列,其中包含来自许多不同语言和脚本的各种字符,我在其他地方看到 utf8mb4_unicode_ci 是此类数据的一种很好的通用编码,因此我将其设置为该列的排序规则。
但是,当我使用数据在 XML 中创建 AJAX 响应时,无论我将 XML 标头设置为什么,都会遇到编码错误。我试过这样设置 XML 编码:
<?xml version="1.0" encoding="utf8mb4_unicode_ci"?>
然后我得到一个Unsupported encoding 错误。我承认对编码的工作原理有点迷惑,而用多种语言处理它会使情况变得更糟。有没有办法为 XML 指定这种编码,一种从 utf8mb4_unicode_ci 转换为 XML 理解的方式,或者我应该在 MySQL 数据库中使用不同的排序规则设置吗?
编辑:也许我犯了与编码无关的错误?这就是我所拥有的。鉴于此 MySQL 数据库:
CREATE TABLE composer (name VARCHAR(32) COLLATE utf8mb4_unicode_ci);
INSERT INTO composer (name) VALUES('Béla Bartók'),('Antonín Dvořák');
...还有这个 PHP 文件:
<?php
$mysqli = new $mysqli("localhost", $username, $password, $database);
header("Content-Type: text/xml");
print("<?xml version=\"1.0\" encoding=\"utf-8\"?><root>");
$res = $mysqli->query("SELECT * FROM composer");
$res->data_seek(0);
while ($row = $res->fetch_assoc()) {
print("<name>" . $row['name'] . "</name>");
}
print("</root>");
mysqli_close($mysqli);
在我的浏览器中打开此结果会出现编码错误,然后查看生成的 Web 检查器窗口会显示占位符字符而不是重音字符。这仅仅是因为我用来查看 XML 文件的工具(Safari)吗?我应该直接解析 XML 响应吗?
【问题讨论】:
标签: mysql ajax xml encoding utf