我目前正在将文字帖子从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
我现在已经没有选择了,而且我被困住了。请帮忙
答案 0 :(得分:3)
你说两个数据库中的文本都是正确的,但实际上这并不意味着太多:要查看记录的内容,你必须使用一些客户端,并且可能会发生很多转换取决于文本的呈现方式,以便您可以阅读。
所以只有两件事情很重要:
由于您的页面输出’
(在CP1252中为xE2x80x99)’
(Unicode U + 2019,UTF-8为0xE28099),我猜这列确实是UTF-8,但是有人介于两者之间数据库和认为文本为CP1252的浏览器。这是你必须检查的:
SET NAMES 'UTF-8'
。请注意,如果您不需要Unicode集,您甚至可以使用CP1252:唯一重要的是您知道编码,因为PHP字符串只是字节数组。Content-Type
标头中明确定义响应编码。我的意思是,配置Drupal来调用header('Content-Type: text/html; charset=utf-8');