带有特殊字符的php,如ñ;

带有特殊字符的php,如ñ;,php,utf-8,header,special-characters,json,Php,Utf 8,Header,Special Characters,Json,起初,我认为问题是当我从ajax调用返回echo json_encode($row)时,带有ñ的结果被更改为NULL。但是在测试之后,我发现问题在那之前就已经存在了 在包含以下内容的示例php文件中: $test = "Nuñez" echo $test 结果就是这样�埃兹 我到处找了找,但建议的解决方案都不管用。比如: mb_internal_encoding('UTF-8'); mb_http_output('UTF-8'); mb_http_input('UTF-8'); mb_lang

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

在包含以下内容的示例php文件中:

$test = "Nuñez"
echo $test
结果就是这样�埃兹

我到处找了找,但建议的解决方案都不管用。比如:

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');
,或
标题('content-type:text/html;charset:utf-8')。还有一些我已经忘记的解决方案,相信我,我尝试了很多

这只是开始,我希望mysql不会有问题,因为我的数据库是utf-8,我的$mysqli字符集也是。但是我想我不能对ajax json_encode说同样的话。但别担心,一次解决一个问题。谁能帮帮我吗。非常感谢

问题解决了我只需在记事本++中设置“UTF-8编码”,就像以前在“ANSI编码”中一样。

对我来说

$test = "Nuñez";
echo $test;
显示努涅斯

你可以试试

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

试试这个

它对我有用

$test = "Nuñez";

echo html_entity_decode(htmlentities($test));

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

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

正确显示拉丁字符,如ññáéíóú等。。在浏览器中,必须使用iso-8859-1而不是UTF-8编码


致以最良好的祝愿

考虑设置默认字符集,这对我很有用


ini字符集(“默认字符集”,“utf-8”)

字符串“CASTAñO”也面临同样的问题

我已经试过了

我使用了
ini_集('default_charset','utf-8')指令

  • 选定的记录显示为“卡斯塔”�O“
  • 使用utf8解码显示“CASTA?O”
  • 使用utf8_encode显示正确的字符串“CASTAñO”

您确定第一位的this字符串在UTF-8中,在发送之前和发送之后,所有头都在UTF-8中吗?我如何才能做到这一点?我有
标题('content-type:text/html;charset:utf-8')
在我的代码中,还有什么我应该添加的吗?即使没有像您建议的utf8编码-解码那样的修改,您的功能也正确吗?真奇怪…我的不是。顺便说一下,我正在使用Firefox。我可以从这里完美地看到ñ,只是从我自己的php文件看不到。解决方案一次只适用于一个字符串,你知道整个页面有什么解决方法吗?我在FF和IE中测试了代码,两个版本的效果都一样。你可能需要更改页面的字符编码。如果有帮助,请检查此项。啊哈!谢谢……这就是我的功劳!我是从你提供的链接中得到的“如果你使用的是手工编辑的文件,那么你应该使用你的编辑器以UTF-8格式保存文件”是的,它和我的一样,而且它对我的查询有效,谢天谢地<代码>$mysqli=newmysqli('localhost','root','password','database')
$mysqli->set_字符集(“utf8”)是的。谢谢,但很抱歉我的问题不清楚。我希望有一个“整个页面”的解决方案。你想在你的网站上使用这个功能来支持多语言吗?没关系。原来问题是我是通过Notepad++保存文件的,用的是ANSI编码,而不是UTF-8编码。这就是我所有问题的根源。你的解决方案也有效,因此我向你致谢并向你投赞成票。
$sql_con = mysql_connect($sql_host, $sql_user, $sql_pass);
mysql_query('SET NAMES utf8');