我的WordPress站点是通过在OpenOffice计算中创建CSV来导入的,保存为Unicode (UTF-8)以保留朝鲜语字符。导入的帖子内容没有任何重大问题,但在前端渲染似乎有问题。
在我想要显示限制在200个字符的帖子摘录的地方,我使用的是:-
<?php
$content = strip_tags(get_the_excerpt());
echo substr($content,0,200);
echo '...';
?>这应该会创建如下内容:-
some korean characters, pretend this is 200 characters...在大约50%的情况下,确实是这样的。在其他情况下,我得到了可怕的黑色菱形和白色问号符号,就在省略号之前。
但是,如果我不使用strip_tags方法,我希望在相同的位置看到钻石符号-但我没有。奇怪的是,出现在例外中的帖子并没有在整个帖子页面上显示菱形符号。
Wp-config具有'DB_CHARSET‘值'utf8mb4’。MySQL数据库表及其列将排序规则显示为'utf8mb4_unicode_ci‘。这就是问题所在吗?我怎么才能纠正这个问题呢?
在查看wp_posts表格时,当我查看特定帖子的内容时,我看不到菱形符号,这些帖子似乎在摘录中显示了这个字符。
此外,如果我编辑一篇有这个问题的帖子,复制190-210个字符左右的字符并粘贴到开头,我仍然只看到省略号前面的菱形符号-这让我认为strip_tags方法是问题所在。
有人愿意试着破解这个吗?
发布于 2015-12-17 10:19:19
我总是在我的.htaccess文件中放入以下内容。我不确定它到底是如何工作的,我在网上某个地方找到了它,它为我解决了问题,所以我一直在使用它。
# USE UTF-8
php_value mbstring.language neutral
php_value mbstring.internal_encoding utf-8
php_value mbstring.encoding_translation on
php_value mbstring.http_input auto
php_value mbstring.http_output utf-8
php_value mbstring.detect_order auto
php_value mbstring.substitute_character none
php_value default_charset utf-8我想我还必须在我的代码入口点的最开始添加以下内容:
if (get_magic_quotes_gpc()) {
$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
while (list($key, $val) = each($process)) {
foreach ($val as $k => $v) {
unset($process[$key][$k]);
if (is_array($v)) {
$process[$key][stripslashes($k)] = $v;
$process[] = &$process[$key][stripslashes($k)];
} else {
$process[$key][stripslashes($k)] = stripslashes($v);
}
}
}
unset($process);
}这对我来说完全是希腊语,但似乎解决了我对unicode的担忧。而且,我总是把我的mysql排序规则设为utf8_general_ci,每个文本字段。
https://stackoverflow.com/questions/34323928
复制相似问题