首页 > 解决方案 > 在 OSX (XCode) 和 Windows (Visual Studio) 上存储 Unicode 字符串的区别

问题描述

我有一个相当复杂的问题,但试着把它分解成一些我无法理解的基本问题。

最后,我需要从用户输入字符串中获取哈希值,这在 Mac 和 Windows 上必须相同。在各种方法都失败后,我开始使用散列 ( picosha2.h) 一个简单的char. 虽然两个平台上的 ASCII 范围哈希值相等,但例如const char* cc = "ø";给出不同的结果。从将声明更改为时的错误猜测unsigned是 Xcode 将其"ø"视为 asconst char[3]而 Visual Studio 将其视为const char[2].

另一个例子"書",它在 Xcode 中输出正确的 Unicode 字符数组大小为 4,但在 Visual Studio 中仍然只有 2。

如果我查看实际的内存内容,我会看到 Xcode 存储c3 b8for "ø",它与 UTF-8 代码匹配,而 Visual Studio 显示f8,这将是该字母的 Unicode 代码点的值,这让我更加困惑(https ://www.utf8-chartable.de)。

有没有机会让 Visual Studio 将(在运行时)字符串解释为 UTF-8 并以与 Xcode 相同的方式存储它们?

标签: c++xcodeunicodeutf-8visual-studio-2017

解决方案


您可以在 Visual Studio 中设置 UTF-8。

Properties->C/C++->Command Line->Additional Options->add /utf-8

此外,您可以将文件保存为 utf-8 格式。

Tools->Customize->Commands->Menu bar: File->Add Command->File->Advanced Save Options

然后,保存文件

File->Advanced Save Options->select utf-8

在此处输入图像描述


推荐阅读