重新: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我甚至不能input该string,每当我粘贴它,我得到Otivägen

我试图创build一个空白的PHP文件只有该string,并上传,但是当我再次Otivägen文件,我得到Otivägen

我的问题是…

 1) Why is `vim` displaying it like this? 2) If the file is downloaded would it display correctly if an application was expecting UTF-8? 3) How can I output this string into a file that will eventually be an XML file in UTF-8 encoding. 

我现在对编码的理解是有限的,我正在试着理解它。

1)为什么vim像这样显示它?

这看起来像vim显示UTF-8编码数据为ISO 8859-1。 复制和粘贴可能是有问题的(你不写什么系统),所以我build议直接input文本。

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

 :set encoding=utf-8 

然后input文本,确保正确显示,并保存。 这会给你一个用UTF-8编码的文件。

2)如果文件被下载,如果应用程序期待UTF-8,它会正确显示?

取决于编码。 如果你像上面那样保存,那么是的。

3)我怎样才能输出这个string到一个文件,最终将是一个UTF-8编码的XML文件。

这显然是非常困难的。 我不熟悉PHP,但根据维基百科:

PHP目前不支持Unicode或多字节string; Unicode支持将包含在PHP 6 […]

所以你可能不得不谷歌的解决方法。 PHP和UTF-8也有一些UTF-8帮助程序库。 否则,select一种不同的语言可能会更好,例如具有固定Unicode支持的Java。

UTF8很有趣。 一旦工作。 : – /如果链条中的任何东西都在等待其他东西而不检查,那么它们都是梨形的。

  • 您需要使用支持UTF8的terminal程序。 侏儒terminal呢。 KTerm呢。 ETerm没有。
  • 检查你的shell中的LANGvariables。 我的是en_AU.UTF-8,意思是UTF8中的英文(澳大利亚文)。
  • vim应该从shellinheritance这个。 你应该可以通过:set encoding进行validation

我只是试了一下,这使一切工作。

关键是, 一切都需要在UTF8模式。