从Windows转换到Linux后,撇号显示为Γ?

时间:2012-08-18 作者:Ben McCormack

我正试图将我的WordPress博客从Windows移动到Linux,但我在Linux版本中看到了一个奇怪的字符编码问题,而我在Windows上没有看到这个问题。(我原以为这是我使用的方式的问题mysqldump 导出数据,但在升级mysql、转储、检查等之后,我很确定我完成了这一部分)。Windows上的数据库中的数据与Linux上的数据完全相同。

下面是我的Windows博客上撇号的样子:

enter image description here

下面是它在Linux博客上的表现:

enter image description here

正如你所看到的,有一个奇怪的ΓÇÖ 一系列字符,而不是撇号。WordPress中是否有需要更改的设置,以使其正确呈现?

更多详细信息:

Windows,我将在响应中返回以下单个撇号的字节:

E2 80 99
Linux,我正在为ΓÇÖ:

CE 93 C3 87 C3 96

3 个回复
最合适的回答,由SO网友:Ben McCormack 整理而成

问题最终是(我认为)Powershell对mysqldump输出的争论。在powershell中,我一直在使用:

mysqldump -u**** -p**** -h**** wordpress --default-character-set=utf8 | 
   out-file out.sql -Encoding UTF8
我甚至擅长为这两个函数显式输出UTF8mysqldumpout-file! 然而,这似乎很难证明(这确实很难证明,因为一旦您将其传递给out-file) 那个out-file 在处理UTF8中的多字节unicode字符时遇到问题。

我切换到使用普通的旧Windows命令提示符,它可以正确输出数据:

mysqldump -u**** -p**** -h**** wordpress --default-character-set=utf8 > 
    out.sql

SO网友:Doug

在我看来,您使用的不是实际的撇号,而是一个卷曲撇号,例如Microsoft Word可能配置为自动更正的撇号。很可能您的mysqldump实际导出时不正确。在我的测试数据库中,PowerShell和命令提示符都转储为ΓÇÖ, 而Cygwin则作为. 如果您的导出在这些区域看起来不错,那么您可能需要检查内容类型返回标头,以查看它是否指定了UTF-8。如果这两个都检查出来,可能是数据库的编码需要修改。

或者,您可以替换 具有\'.

SO网友:fujiiface

最近PowerShell中也出现了同样的问题,我的一位同事建议将此添加到我的脚本顶部。

[System.Console]::OutputEncoding = [System.Console]::InputEncoding = [System.Text.Encoding]::UTF8
一旦添加, 已停止输出为ΓÇÖ

结束

相关推荐

Encoding Method for URLs?

WordPress是否有一种编码URL的方法或API,类似于在URL中使用标题时生成部分URL的方式?我正在编写一个生成URL的插件,并希望使用与其他所有插件相同的方法。例如,我在标题中键入“这是我的博客文章”,然后生成“这是我的博客文章”。