【问题标题】:Why is ñ changing to ñ?为什么ñ变成ñ?
【发布时间】:2012-06-03 05:36:58
【问题描述】:

每当我保存任何包含 ñ 的字符串时,我都不明白它会更改为 ñ。即使在数据库中,ñ 也更改为 ñ。

例子:

  • ñ 变成ñ。
  • Niño 变成 Niño。

我不知道是什么导致了这个问题,也不知道问题出在哪里。请帮忙。提前致谢。

【问题讨论】:

  • 我怀疑这是一个数据库问题,因为“即使在数据库中......”;检查插入的实际值可能会证实/反驳这一点。
  • 数据库可能不是UTF-8。

标签: java unicode


【解决方案1】:

您的string 编码错误。这是UTF-8,但你需要其他的,嗯,Latin-1? 你需要解码。

查看this

希望对你有帮助。

【讨论】:

  • 是的,它的 UTF-8。所以你是说这就是问题的来源?
【解决方案2】:

这是一个字符编码问题,您需要检查您从写入器到读取器的整个堆栈是否设置为 UTF-8。

看看这个discussion,它可能包含一些可以帮助你的信息:

【讨论】:

    【解决方案3】:

    肯定是字符编码问题。确保数据库、网页、内容字符集、java 文件、字符串编码等都使用完全相同的编码 - 例如,UTF-8。

    【讨论】:

      【解决方案4】:

      字符 ñ (U+00F1) 使用 UTF-8 编码为两个字节 11000011 10110001 (0xC3 0xB1)。

      这两个字节使用 ISO 8859-1 解码为两个字符 ñ

      因此,您很可能使用 UTF-8 将字符编码为字节,并使用 ISO 8859-1(Sajmon 猜测的拉丁语 1)将字节解码为字符。

      【讨论】:

      • 请问您是如何计算出二进制编码的/您使用哪个来源获得的?
      • @Philippe:我使用了 UTF-8 的标准定义。维基百科有一个不错的页面en.wikipedia.org/wiki/UTF-8#Description
      猜你喜欢
      • 1970-01-01
      • 2023-03-08
      • 2020-06-13
      • 1970-01-01
      • 2014-12-18
      • 1970-01-01
      • 2012-08-10
      • 1970-01-01
      • 2014-05-08
      相关资源
      最近更新 更多