首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试删除一些utf8_encode不能修复的字符

尝试删除一些utf8_encode不能修复的字符
EN

Stack Overflow用户
提问于 2013-01-02 01:30:16
回答 2查看 516关注 0票数 2

好吧,我在我正在制作的网站中有一些地方的标题有点古怪

我尝试过使用utf8_encodehtml_entity_decode(stripslashes($title),ENT_QUOTES, "UTF-8")以及其他几种解决方案,但都不起作用。我似乎无法摆脱它们:下面是一个例子:

标题在我尝试之前:

New Era Miami Dolphins NFL® 9FIFTY� Solid Snap Miami Dolphins - Zappos.com Free Shipping BOTH Ways

下面是utf8_encode和html实体之后的代码

New Era Miami Dolphins NFL® 9FIFTY⢠Solid Snap Miami Dolphins - Zappos.com Free Shipping BOTH Ways

这仍然是个问题--有没有办法摆脱这些问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-02 04:02:21

看起来您拥有的标题是UTF-8编码的,但是您嵌入它的HTML页面实际上并没有标记为UTF-8,所以浏览器使用默认字符集解释文本,该字符集可能是ISO-8859-1。

假设页面上的所有文本实际上都是UTF-8 (或US-ASCII,它是UTF-8的子集),最简单的解决方案是只发送适当的HTTP头(和/或元标记)来指示正确的字符集。特别是,在PHP中,您可以执行以下操作:

代码语言:javascript
复制
header( "Content-Type: text/html; charset=utf-8" );

或者,您可以在HTML代码的head部分包含等效的meta标记:

代码语言:javascript
复制
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

或者,在HTML5中,简单地说:

代码语言:javascript
复制
<meta charset="utf-8">
票数 0
EN

Stack Overflow用户

发布于 2013-01-02 04:26:46

你可以随时借用wordpress (seems_utf8)的函数,并根据自己的需要进行修改:

代码语言:javascript
复制
function remove_none_utf8($str) {
    $ret = '';

    $length = strlen($str);

    for ($i=0; $i < $length; $i++) {
            $ok = true;

        $c = ord($str[$i]);

        if ($c < 0x80) $n = 0; # 0bbbbbbb

        elseif (($c & 0xE0) == 0xC0) $n=1; # 110bbbbb

        elseif (($c & 0xF0) == 0xE0) $n=2; # 1110bbbb

        elseif (($c & 0xF8) == 0xF0) $n=3; # 11110bbb

        elseif (($c & 0xFC) == 0xF8) $n=4; # 111110bb

        elseif (($c & 0xFE) == 0xFC) $n=5; # 1111110b

        else continue; # Does not match any model


        for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ?

            if ((++$i == $length) || ((ord($str[$i]) & 0xC0) != 0x80)) {
                            $ok = false;

                continue;
                    }

        }
            if ($ok === true) $ret .= $str[$i];

    }

    return $ret;

}

所以你可以这样使用它:

代码语言:javascript
复制
$str = "New Era Miami Dolphins NFL® 9FIFTY� Solid Snap Mi";
echo remove_none_utf8($str);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14112577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档