我知道有一些帖子是针对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"
。
请让我知道我错在哪里以及如何解决它。?
答案 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服务获取文本,则应始终在处理文本之前检查标头是否有正确的编码。