繁体   English   中英

UTF-8编码不起作用

[英]UTF-8 Encoding not working

我知道有很多关于utf-8编码问题的文章。 但是我无法将字符串转换为utf-8。

我在php中有一个字符串"beløp"

当我在i框架中打印此屏幕时,它会打印"bel p"

之后,我尝试了utf8_encode("beløp"); -现在我得到了输出- "bel�p"

我再次尝试了iconv("UTF-8", "ISO-8859-1", "beløp"); 现在我得到输出- "bel "

最后我尝试了utf8_encode(utf8_decode("beløp")); 现在我得到了输出- "bel?p"

请让我知道我错在哪里以及如何解决。

这个

bel�p

表示您正在UTF-8上下文中输出非UTF-8字符。

确保您的文件使用UTF-8编码(不知道您使用的是什么编辑器,但是Notepad ++ / Sublime Text带有“ Save with encoding ..”选项),并且如果在HTML页面顶部有

<meta charset="utf-8">

嗨,它已经解决了,我的文件有问题,它没有用“ UTF-8”编码。

我通过将“bel p”替换为“beløp”进行修复。

转换不起作用的原因是“beløp”文本的原始格式不在iso-8859-1中。 utf8_encode仅适用于这种格式的转换。 解决此类问题的方法是使用mb_detect_encoding函数( http://php.net/manual/en/function.mb-detect-encoding.php )找出文本的原始格式,然后使用iconv从检测到的编码转换为utf-8。 完成此操作后,您必须确保如前面的注释中所述,utf-8与标头中的编码相同。

请注意,php mb detect enconding并不是很可靠,并且在检测正确的编码时可能会出错。 特别是如果您没有大量的文本。 为了确保始终正确显示所有文本,您需要确保始终所有处理均采用相同的编码。 如果从外部来源或Web服务获取文本,则在处理文本之前,应始终检查标题是否正确编码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM