UTF-8编码无法正常工作

时间:2013-07-20 08:03:20

标签: php utf-8

我知道有一些帖子是针对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"

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

3 个答案:

答案 0 :(得分:2)

bel�p

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

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

<meta charset="utf-8">

答案 1 :(得分:1)

嗨,它修复了我的文件中有问题,它没有编码为“UTF-8”。

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

答案 2 :(得分:0)

您的转换不起作用的原因是因为“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服务获取文本,则应始终在处理文本之前检查标头是否有正确的编码。