Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从wordpress导入时drupal中的编码问题_Php_Wordpress_Drupal_Utf 8 - Fatal编程技术网

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

Php 从wordpress导入时drupal中的编码问题,php,wordpress,drupal,utf-8,Php,Wordpress,Drupal,Utf 8,我目前正在将博客文章从wordpress转移到drupal。但是在移动它之后 某些文本未正确显示 wordpress正在显示: 当它没有时(html代码是当它没有时) Drupal正在显示: 当它没有™t(html代码是指当它™t) 在wordpress和drupal db中,该值是正确的。来源是相同的。 当它没有™t 我搜索了一下,找到了很多选择。他们都没帮上忙。 下面是我做过并检查过的 1) 我仔细检查了utf-8是否是drupal和wp中的字符编码。 我还制作了一个简单的test.php

我目前正在将博客文章从wordpress转移到drupal。但是在移动它之后 某些文本未正确显示

wordpress正在显示:
当它没有时(html代码是当它没有时)

Drupal正在显示:
当它没有™t(html代码是指当它™t) 

在wordpress和drupal db中,该值是正确的。来源是相同的。
当它没有™t

我搜索了一下,找到了很多选择。他们都没帮上忙。 下面是我做过并检查过的

1) 我仔细检查了utf-8是否是drupal和wp中的字符编码。 我还制作了一个简单的test.php文件,以检查没有其他东西会妨碍我 它仍然没有正确显示

2) 当我们获取mysqldump并上传到DrupalUTF-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
$value2=“当它没有™t”;
$out=recode_字符串(“…utf-8”,$value2);
//输出-当它没有
$out2=mb_convert_编码($value2,'UTF-8','UTF-8”);
//输出-当它没有
$out3=@iconv('UTF-8','UTF-8',$value2);
//输出-当它没有

我现在已经没有选择了,我被卡住了。请帮助

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

因此,只有两件事很重要:

  • 列的编码
  • Drupal返回的HTML页面的编码
  • 因为您的页面输出了
    (CP1252中是xE2x80x99)表示
    (Unicode U+2019,UTF-8是0xE28099)我猜该列确实是UTF-8,但是数据库和浏览器之间有人认为文本是CP1252。这是您必须检查的内容:

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

    mb_convert_编码($wp_post->post_内容,'CP1252',“UTF-8”);谢谢,我可以知道你是如何识别它的CP1252的吗?@VishalKhialani教育猜测:它必须是一个代码页(1字节=1个字符),必须包含–和€(欧洲字符),并且是我用十六进制编辑器尝试的第一种编码,因为它是我的Windows使用的。顺便说一句,所谓的网络礼仪就是在解决你的问题时向上投票并接受答案,特别是当用户正在收集帽子时:P