回复:UTF-8、PHP 和 XML Mysql

回复:UTF-8、PHP 和 XML Mysql

这与https://stackoverflow.com/questions/1791082/utf-8-php-and-xml-mysql,我仍在努力理解。

我有几个单独的问题,希望能帮助我了解如何解决我遇到的问题。

我正在尝试从数据库读取值并输出到 UTF-8 格式的文件中。但我遇到了编码问题,所以我想我应该删除所有代码并从以下代码开始:

$string = "Otivägen";
// then output to a file.

但是vim我甚至无法输入该字符串;每次我粘贴它时都会得到Otivägen

我尝试创建一个仅包含该字符串的空白 PHP 文件并上传它,但是当我cat再次使用此文件时,我得到了Otivägen

我的问题是:

  1. 为什么会vim这样显示呢?
  2. 如果下载了文件,并且应用程序需要 UTF-8,它是否可以正确显示?
  3. 我如何才能将该字符串输出到最终为 UTF-8 编码的 XML 文件中?

我目前对编码的理解有限,我正在尝试理解它。

答案1

1)为什么会vim这样显示?

这看起来 vim 将 UTF-8 编码数据显示为 ISO 8859-1。复制和粘贴可能会有问题(您没有写出您使用的是什么系统),因此我建议直接输入文本。

要在 vim 中正确编辑文件,首先将 vim 设置为使用 UTF-8:

:set encoding=utf-8

然后输入文本,确保其正确显示,然后保存。这将为您提供一个以 UTF-8 编码的文件。

2)如果下载了文件并且应用程序需要 UTF-8,它是否可以正确显示?

取决于编码。如果你按照上面的方法保存,那么可以。

3)如何将此字符串输出到最终为UTF-8编码的XML文件的文件中。

这显然非常困难。我不太熟悉 PHP,但根据 Wikipedia 的说法:

PHP 目前不支持 Unicode 或多字节字符串;Unicode 支持将包含在 PHP 6[...] 中。

因此,您可能需要通过 Google 寻找解决方法。此外,还有一些适用于 PHP 和 UTF-8 的 UTF-8 帮助库。否则,最好选择其他语言,例如具有可靠 Unicode 支持的 Java。

答案2

UTF8 很有趣。一旦它起作用。:-/ 如果链中的任何内容正在等待其他内容并且没有检查,那么一切都会变得很糟糕。

  • 您需要使用支持 UTF8 的终端程序。Gnome-terminal 支持。KTerm 支持。ETerm 不支持。
  • 检查 shell 中的 LANG 变量。我的是 en_AU.UTF-8,表示 UTF8 中的英语(澳大利亚)。
  • vim 应该从 shell 继承这一点。你应该能够使用以下命令验证这一点:set encoding

我刚刚尝试了一下,一切正常。

关键在于一切需要采用UTF8模式。

相关内容