大约 2 年前,我犯了使用 iso-8859-1 启动大型网站的错误。我现在遇到了一些字符问题,尤其是在使用 ajax 向服务器发送数据时。因此,我想改用 UTF-8。
您从中看到了什么问题?我知道我必须搜索该站点以查找需要从 ? 更改的字符。到他们的真实性格。但是,这样做还有其他风险吗?有没有人这样做过?
大约 2 年前,我犯了使用 iso-8859-1 启动大型网站的错误。我现在遇到了一些字符问题,尤其是在使用 ajax 向服务器发送数据时。因此,我想改用 UTF-8。
您从中看到了什么问题?我知道我必须搜索该站点以查找需要从 ? 更改的字符。到他们的真实性格。但是,这样做还有其他风险吗?有没有人这样做过?
主要困难是确保您检查了所有数据路径都是 UTF-8 干净的:
您的网站是否有数据库支持?如果是这样,您需要将所有表转换为 UTF-8 或其他一些 Unicode 编码,以便排序和文本搜索正常工作。
您的网站是否使用某种编程语言来处理动态内容?(PHP、mod_perl、ASP...?)如果是这样,您必须确保您使用的特定语言解释器完全理解某种形式的 Unicode,如果它不使用原生 UTF-8,则计算转换— UTF-16 是下一个最常见的 — 并检查它是否已配置为在其到 Web 服务器的输出中使用 UTF-8。
您的网站是否有某种后端应用服务器?它的文本输出是否使用 UTF-8?
您可以在至少三个不同的位置声明 Web 文档的字符集。确保全部更改:
Content-Type
标头<meta http-equiv="Content-Type">
标签'<head>
<?xml>
文档顶部的标记,如果使用 XHTML Strict这一切都源于我一年前的经验,当时我通过一个中等复杂的 N 层应用程序跟踪了一些 Unicode 数据,并发现了如下转换链:
Latin-1 → UTF-8 → Latin-1 → UTF-8
因此,即使数据最终在声称是“UTF-8”的浏览器中出现,该应用程序仍然只能处理与 Latin-1 相同的子集。
这些奇怪的转换链的最大原因是由于当时工具中的 Unicode 支持不成熟,但如果你不小心使管道 UTF-8 干净,你仍然会发现自己像这样搞砸了。
至于您关于搜索Latin-1字符并逐个转换文件的评论,我不会那样做。我会围绕iconv
每个现代 Linux 系统上的实用程序构建一个脚本,输入系统中的每个文本文件,将其从 Latin-1 显式转换为 UTF-8。不遗余力。
这样的变化(几乎)触及系统的每个部分。您需要浏览所有内容,从数据库到 PHP 到 HTML 到 Web 浏览器。
启动一个测试站点并对其进行一些严格的测试(各种平台上的各种浏览器做各种事情)。
IMO 重要的是要真正熟悉 UTF-8 及其对软件的意义。几个要点:
strstr()
仍然可以正常工作。