0

我知道有很多帖子是针对 utf-8 编码问题的。但我无法将字符串转换为 utf-8。

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

当我在 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"

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

4

3 回答 3

2

这个

bel�p

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

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

<meta charset="utf-8">
于 2013-07-20T08:17:56.053 回答
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 检测编码不是很可靠,并且在检测正确编码时可能会出错。特别是如果您没有大量文本。为确保始终正确显示所有文本,您需要确保所有处理始终采用相同的编码。如果您从外部来源或 Web 服务获取文本,则应始终在处理文本之前检查标头是否正确编码。

于 2015-03-16T14:07:59.037 回答
0

嗨,它已修复,我的文件中存在问题,它没有以“UTF-8”编码。

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

于 2013-07-20T09:20:03.220 回答