从NFD到NFC的OSX和c++ unicode转换
OSX and C++ unicode conversion from NFD to NFC
我有一个问题与NFD Unicode字符串我从OSX文件系统。
这是我在OSX"Axccx88"上得到的"Ä"-Umlaut,这是我期望的"xc3x84"。同样的函数在windows下也可以这样做(简单的boost文件系统操作,列出一个目录)。
在搜索了一段时间后,我发现苹果的NFD编码为UTF-8和世界其他地方的NFC。我尝试了一些转换通过nsstring或boost::locale::normalize,但没有成功。
有人知道在c++中这样做的方法吗(我可以通过obj-c使用Cocoa,如果必要的话)?
我希望原始的unicode字符串作为std::string (unicode编码)之后。
这是获得预组合表单的解决方案。
std::string precomposeFilename(const std::string& name)
{
CFStringRef cfStringRef = CFStringCreateWithCString(kCFAllocatorDefault, name.c_str(), kCFStringEncodingUTF8);
CFMutableStringRef cfMutable = CFStringCreateMutableCopy(NULL, 0, cfStringRef);
CFStringNormalize(cfMutable,kCFStringNormalizationFormC);
char c_str[255 + 1];
CFStringGetCString(cfMutable, c_str, sizeof(c_str)-1, kCFStringEncodingUTF8);
CFRelease(cfStringRef);
CFRelease(cfMutable);
return std::string(c_str);
}
NSString有- (NSString *)precomposedStringWithCanonicalMapping功能,和其他一些,看起来他们会帮助你。
相关文章:
- C++ - Unicode Newline
- 如何将unicode字符串从C++传递到delphi
- ascii 和 unicode 在处理级别有什么区别吗?
- 无法从 std::string 中提取C++ Unicode 符号
- MinGW64 - Unicode 源文件错误?
- 使用 Visual Studio 2019 编译 Unicode
- 将ANSI C字符串转换为UNICODE
- 如何从 oracle 数据库 c++ 读取 unicode
- 在特定 Unicode 路径中创建文件
- 如何存储 unicode 字符并将其输出到文件?
- C++ wmain 函数错误时使用 Unicode
- C++:打印 Unicode 字符
- QTextStream,用于打印英语和Unicode 16
- 将 unicode 字符串与 c ++ 符号进行比较?
- 如何在C++中使用 UTF-8 和 Unicode?C++20 char8_t有多大?
- 在 CHtmlEditCtrl::SetDocumentHTML 中使用 Unicode
- C++ - 为什么 unicode 输出不正确?
- 如何在 c++ 中读取用 utf-8 编码的 java unicode 字节字符串
- 在 Windows 中使用 boost::p rogram_options 从命令行参数读取 Unicode 字符
- C++:Unicode 字符串文字的可移植性