【问题标题】:Convert from ß to s c++从 ß 转换为 s c++
【发布时间】:2011-04-25 12:31:48
【问题描述】:

在 c++ 中有没有办法将 ö 转换为 o,或 ß 转换为 s,通常从 utf-8 转换为 ASCII 中的相应字符?

【问题讨论】:

  • 与编码无关,但人们通常用普通字母写字符,如下所示:将是 ß->ss 和 ö->oe
  • @chigley:问题是,这取决于语言。
  • @chris_l - 我从 Eszett 收集到源文本是德语,因为我想不出任何其他使用它的语言! (维基证实了这一点,除了“罗马化苏美尔语”)
  • @chigley:在这种情况下可能是真的。但我想说的是,你不能简单地建立一个像ö->oeü->ue 等的表格,并期望它在所有文本上都能正常工作,因为其他语言可能会使用不同的替换(我相信,它是例如,土耳其语中的 ü 不同)。
  • UTF-8 支持 1600 万个不同的字符。您打算绘制其中多少个?显而易见的解决方案当然是不要尝试这样做。现代操作系统对 Unicode 没有任何问题。

标签: c++ utf-8 ascii


【解决方案1】:

标准 C++ 不支持 UTF-8。我建议这个库: http://utfcpp.sourceforge.net/

如果您愿意,也许可以为此使用内置的 POSIX 或 Windows 功能。但是它不便携。

【讨论】:

  • 每个 8 位字符都支持 UTF-8。 Win32 API 在 UTF-8 上很烂,但这与“c++ 不支持 UTF-8”不同。 C++ 没有字符编码的概念(除了 和方面),而且通常也不需要它......
  • 当然,使用 C++ 处理 UTF-8 并非不可能,但没有语言支持。与例如相反C#、Python 或 Java。
  • 我认为可以公平地说,没有编码概念的语言不支持 UTF-8。 ;)
  • 需要在 linux 上实现。 iconv() 大约是我需要的,但还不够好。所以我创建了一个像ö->oe、ü->ue 这样的表。及时我会扩展桌子。
猜你喜欢
  • 2017-10-31
  • 1970-01-01
  • 2021-10-25
  • 1970-01-01
  • 2016-11-12
  • 2013-02-09
  • 1970-01-01
  • 2011-12-31
  • 1970-01-01
相关资源
最近更新 更多