【问题标题】:Multilingual string to Number多语言字符串转数字
【发布时间】:2013-05-30 09:58:44
【问题描述】:

我有以下代码:

    const wchar_t *  hstr    = L"\x0967\x0968\x0969\x096a"; //1234 in Devnagari script.
    unsigned long long   u1;
    long long    n1;


n1  = wcstoll   (hstr, NULL, 10); // _wcstoi64 on Windows
u1  = wcstoull  (hstr, NULL, 10); // _wcstoui64 on Windows
LOG(L"String: \"%ls\" is %lld as long 64"),   hstr, n1);
LOG(L"String: \"%ls\" is %llu as long 64"), hstr, u1);

在 Windows 上的日志上,它工作正常并且数字被转换。

在 Mac OS X 上,n1 和 u1 是 0 而不是 1234。这里有什么问题? Mac OS X 上的 wctoll 是否不支持多语言号码?

【问题讨论】:

  • “在“C”语言环境之外,其他特定于语言环境的主题序列形式可能被接受。”不需要接受梵文数字,如果你的 Mac 上的 C 库完全接受,你需要设置正确的语言环境。

标签: c++ c macos unicode


【解决方案1】:

wchar_t 不一定是 unicode 数字。它取决于语言环境,所以也许先看看设置你的语言环境。只是猜测

【讨论】:

  • 在 Mac OS X 的初始化中,我调用了 setlocale(LC_TYPE, "")。我还需要做什么?
  • 您可以尝试为 devangari 使用 unicode 编码。也许hi_IN.UTF-8。只是一个猜测。我认为locale -a 列出了您系统上所有可用的语言环境
猜你喜欢
  • 1970-01-01
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-06
  • 2016-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多