【问题标题】:UTF-8 Encoding not workingUTF-8 编码不起作用
【发布时间】:2013-07-19 13:39:58
【问题描述】:

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

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

【问题讨论】:

标签: php utf-8


【解决方案1】:

这个

bel�p

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

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

<meta charset="utf-8">

【讨论】:

  • 1) 阅读其他人的cmets。 2)在新答案中写下相同的内容。 3) 利润。 :)
  • @Eggplant 不确定您的意思-这是问题的正确答案吗? (虽然元标记的东西似乎没有必要,因为他已经在输出 UTF-8, 表明了这一点)
  • @Eggplant:我是一名网页设计师,这是我的工作,不必“从别人那里获利”来获得知识:) 阅读:我还给了他一个“如何做”用编码保存..你没有的东西。也许这就是它烧你的原因?保持冷静伙计,这是一个帮助网站。重要的是提出问题的人解决了他的问题。我没有从中获得任何利润。我这样做是免费的
  • @Eggplant 如果您对您首先在评论中发布解决方案这一事实有疑问 - 不这样做并首先写一个答案怎么样?评论任何人都可以变成答案的公平游戏。另外,它并不是 那个 原创的解决方案,没有其他人会想出它。如果您因此而投反对票,请将其删除。
  • @Kevin 我冒昧地修改了您的答案,如果您不喜欢,请随时回滚
【解决方案2】:

您好,我的文件中存在问题,它没有以“UTF-8”编码。

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-05
      相关资源
      最近更新 更多