【问题标题】:php with special characters like ñ带有特殊字符的php,如ñ
【发布时间】:2012-10-23 20:59:28
【问题描述】:

起初我认为问题是当我从 ajax 调用返回 echo json_encode($row) 时,结果 ñ 更改为 NULL。但是经过测试我发现问题在此之前就存在了。

在一个示例 php 文件中:

$test = "Nuñez"
echo $test

结果只是 Nu�ez

我已经四处搜索,但建议的解决方案都不起作用。喜欢:

mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_http_input('UTF-8');
mb_language('uni');
mb_regex_encoding('UTF-8');
ob_start('mb_output_handler');

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />,或header('content-type: text/html; charset: utf-8');。还有一些我已经忘记的解决方案,相信我我尝试了很多。

这只是开始,我希望 mysql 不会有问题,因为我的数据库是 utf-8 格式,我的 $mysqli 字符集也是如此。但我想我不能对 ajax json_encode 说同样的话。但没关系,一次一个问题。任何人都可以帮助我。非常感谢!

问题已解决我只需要在 Notepad++ 中设置“UTF-8 编码”,就像之前的“ANSI 编码”一样。

【问题讨论】:

  • 你确定这个字符串首先是UTF-8,在发送之前和发送之后所有的标头都是UTF-8吗?
  • 我该怎么做?我的代码中有header('content-type: text/html; charset: utf-8');,还有什么我应该添加的吗?

标签: php utf-8 header special-characters json


【解决方案1】:

字符串“CASTAÑO”面临同样的问题。

我已经尝试过发布的解决方案。

我使用了ini_set('default_charset', 'utf-8'); 指令。

  • 所选记录显示“CASTA�O”
  • 使用 utf8-decode 显示“CASTA?O”
  • 使用 utf8_encode 显示正确的字符串“CASTAÑO”

【讨论】:

    【解决方案2】:

    考虑设置 default_charset,这对我有用

    ini_set('default_charset', 'utf-8');

    【讨论】:

      【解决方案3】:

      要在浏览器中正确显示 ñ á é í ó ú 等拉丁字符,您必须使用 iso-8859-1 而不是 UTF-8 编码 http://www.w3schools.com/tags/ref_entities.asp

      最好的问候!

      【讨论】:

        【解决方案4】:

        对我来说

        $test = "Nuñez";
        echo $test;
        

        显示努涅斯

        你可以试试

        $test = "Nuñez";
        echo utf8_decode($test);
        

        $test = utf8_encode("Nuñez");
        echo utf8_decode($test);
        

        【讨论】:

        • 即使没有像您建议的 utf8 编码解码那样进行修改,您的功能也能正常运行?这很奇怪……我的没有。顺便说一句,我正在使用 Firefox。我可以从这里完美地看到 ñ,只是不是从我自己的 php 文件中。并且解决方案一次只针对一个字符串,您知道整个页面的任何解决方法吗?
        • 我在 FF 和 IE 中测试了代码,它在两者中的工作方式相同..您可能需要更改页面的字符编码..如果有帮助,请检查此w3.org link on changing character encoding to UTF-8..
        • 啊哈!谢谢..那是为我做的!我是从您提供的链接中获得的“如果您正在处理手动编辑的文件,那么您应该使用您的编辑器将文件保存为 UTF-8”
        【解决方案5】:

        当你连接到你的 mysql 数据库时,将 charset 设置为 utf-8,比如 ->

        $sql_con = mysql_connect($sql_host, $sql_user, $sql_pass);
        mysql_query('SET NAMES utf8');
        

        【讨论】:

        • 是的,它和我的一样,它对我的​​查询有用,谢天谢地! $mysqli = new mysqli('localhost', 'root', 'password', 'database');$mysqli->set_charset("utf8");
        【解决方案6】:

        试试这个

        它对我有用。

        $test = "Nuñez";
        
        echo html_entity_decode(htmlentities($test));
        

        【讨论】:

        • 是的。谢谢,但很抱歉我的问题不清楚。我希望有一个“整页”的解决方案。
        • 您想使用此功能来支持您网站的多语言吗?
        • 没关系。事实证明,问题是我通过 Notepad++ 以 ANSI 而不是 UTF-8 编码保存我的文件。这就是我所有问题的根源。您的解决方案也有效,因此您得到我的感谢和支持。
        猜你喜欢
        • 2020-08-15
        • 2019-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多