我在MySQL中有一个列,包含来自许多不同语言和脚本的各种字符,我在其他地方看到
utf8mb4_unicode_ci
对于这种类型的数据是一种很好的通用编码,所以我将其设置为该列的排序规则。
然而,当我使用数据在XML中创建AJAX响应时,无论我将XML头设置为什么,都会出现编码错误。我尝试过这样设置XML编码:
<?xml version="1.0" encoding="utf8mb4_unicode_ci"?>
但我得到了
Unsupported encoding
错误我承认我对编码的工作方式有点困惑,用多种语言处理它会让事情变得更糟。有没有一种方法可以为XML指定这种编码,一种从
utf8mb4\u unicode\u 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响应?