从wordpress导入时编码drupal中的问题

时间:2013-12-17 08:36:36

标签: php wordpress drupal utf-8

我目前正在将文字帖子从wordpress移到drupal。然而在移动它之后 部分文字没有正确显示。

wordpress正在显示:     When it hasn’t (html code is <h2>When it hasn’t</h2>)

Drupal正在显示:     When it hasn’t (html code is <h2>When it hasn’t</h2>)

在wordpress和drupal db中,值是正确的。来源是一样的。     <h2>When it hasn’t</h2>

我进行了搜索并找到了很多选项。他们都没有帮助。 以下是我已经完成并检查的内容。

1)我仔细检查过utf-8是drupal和wp中的角色。 我还制作了一个简单的test.php文件,以检查是否还有其他问题 它仍然无法正确显示。

2)我确定当我们采用mysqldump并上传到drupal utf-8时 使用。

3)我还确保.php文件在保存时为utf-8。

4)我为每个可用选项改变了chrome的编码类型,没有 正确显示。

5)我还使用了php函数来重新编码,但是它们没有用。

$value2="<h2>When it hasn’t</h2>";

$out = recode_string('..utf-8', $value2);
//output - When it hasnt

$out2= mb_convert_encoding($value2,'UTF-8', "UTF-8");
// output  - When it hasn’t


$out3= @iconv('UTF-8', 'utf-8', $value2);
// output - When it hasn’t

我现在已经没有选择了,而且我被困住了。请帮忙

1 个答案:

答案 0 :(得分:3)

你说两个数据库中的文本都是正确的,但实际上这并不意味着太多:要查看记录的内容,你必须使用一些客户端,并且可能会发生很多转换取决于文本的呈现方式,以便您可以阅读。

所以只有两件事情很重要:

  1. 列的编码
  2. Drupal返回的HTML页面的编码
  3. 由于您的页面输出’(在CP1252中为xE2x80x99)(Unicode U + 2019,UTF-8为0xE28099),我猜这列确实是UTF-8,但是有人介于两者之间数据库和认为文本为CP1252的浏览器。这是你必须检查的:

    • 如果使用MySQL,连接编码必须是UTF-8,这样您在PHP脚本中的内容就是UTF-8文本。您可以使用SET NAMES 'UTF-8'。请注意,如果您不需要Unicode集,您甚至可以使用CP1252:唯一重要的是您知道编码,因为PHP字符串只是字节数组。
    • 在HTTP Content-Type标头中明确定义响应编码。我的意思是,配置Drupal来调用header('Content-Type: text/html; charset=utf-8');
    • 如果HTTP响应编码与用于从db检索的文本的编码不同,则相应地对查询结果进行转码