Tag: unicode

C ++中的Unicode问题,但不是C

我正在尝试在Windows上用C ++编写unicode字符串到屏幕上。 我将控制台字体更改为Lucida Console ,并将输出设置为CP_UTF8即65001。 我运行以下代码: #include //notice this header file.. #include #include int main() { SetConsoleOutputCP(CP_UTF8); const char text[] = “Россия”; printf(“%s\n”, text); } 打印出来就好了! 但是,如果我这样做: #include //the C++ version of the header.. #include #include int main() { SetConsoleOutputCP(CP_UTF8); const char text[] = “Россия”; printf(“%s\n”, text); } 它打印: 我不知道为什么.. 另一件事是我做的时候: #include #include int main() […]

如何迭代unicode字符并用C中的printf在屏幕上打印?

我想迭代所有(至少16位)unicode字符并用C在屏幕上打印它们。 我知道有关于SO的相关问题,但它们没有解决C中printf的问题,但这是我想要实现的,如果它可能毕竟是可能的。 我认为应该可能有一个我不知道的技巧。 既然我想使用printf,我想到了这样的事情: for (int i = 0x0000; i <= 0xffff; i++) { //then somehow increment the string char str[] = "\u25A1\n"; printf("%s", str); char str[] = "\u25A2\n"; printf("%s", str); char str[] = "\u25A3\n"; printf("%s", str); … } 但是增加unicode代码点有点问题,在这里\u25A1 。 我知道它本身是不可能的,因为像\u0000这样的字符是不可打印的,编译器说不。 但除此之外,我怎么能从hex0000增加到ffff并用printf打印字符。

为什么wchar_t在Linux /相关平台的代码中没有被广泛使用?

这引起了我的兴趣,所以我要问 – 为什么wchar_t在类似Linux / Linux的系统上没有像在Windows上那样广泛使用? 具体来说,Windows API在内部使用wchar_t而我认为Linux没有,这反映在许多使用char类型的开源软件包中。 我的理解是,给定一个需要多个字节来表示它的字符c ,然后在char[]forms中, c被分成char*几个部分,而它在wchar_t[]形成一个单元。 那么,使用wchar_t总是不容易吗? 我是否错过了否定这种差异的技术原因? 或者只是采用问题?

unicode你好世界的C?

我想从C输出像안,蠀,things这样的东西 #include int main() { fwprintf(stdout, L”안, 蠀, ☃\n”); return 0; } 输出是?,?,? 如何打印这些字符? 编辑: #include #include int main() { setlocale(LC_CTYPE, “”); fwprintf(stdout, L”안, 蠀, ☃\n”); return 0; } 这样做了。 输出是안,蠀,☃。 除了中文字符和雪人在我的urxvt中显示为框,可能是因为我没有启用这些区域设置。 $ locale -a C en_US en_US.iso88591 en_US.iso885915 en_US.utf8 ja_JP.utf8 ko_KR ko_KR.euckr ko_KR.utf8 korean korean.euc POSIX zh_CN.utf8 我必须另外启用哪个区域设置才能显示中文字符和雪人? 也许我需要字体? 以上程序将在Windows上运行吗?

如何在普通C89中读取字符长度的UTF-8字符串?

我正在用普通的C89编写一个自定义的跨平台简约TCP服务器。 (但我也会接受POSIX特定的答案。) 服务器使用UTF-8字符串,但从不查看它们。 它将所有字符串视为不可变二进制blob。 但是现在我需要接受来自客户端的UTF-8字符串,它不知道如何以字节为单位计算它们的大小。 客户端只能以字符forms传输字符串长度。 (更新:客户端使用JavaScript,实际上,“字符长度”是String.length()返回的任何内容。我假设它是实际的UTF-8字符,而不是其他字符。) 我不想在我的servlets器上添加大量依赖项。 有没有一种强大而简洁的方法来读取这个数据报? (为了这个问题,让我们说它是从FILE *读取的。) U ; data type marker (actually read by dispatching code) ; UTF-8 string size in characters ; data blob 例: U 7 Юникод! 更新: 一批数据可以包含多个数据报,因此近似读取不起作用,我需要读取确切数量的字符。 实际的UTF-8数据可能包含任何字符,因此我不能选择一个字符作为终结符 – 我不想在数据中转移它。

C字符串库

C(不是C ++)的C字符串库是否实现了对char *和wchar_t *字符串的抽象? 要求是: 获得BSD / MIT / CDDL许可 实现某种引用计数机制 支持正则表达式 有Unicode支持 谢谢,

在Windows上使用zlib和Unicode文件路径

我正在使用zlib阅读gzip压缩文件。 然后使用打开文件 gzFile gzopen(const char *filepath, const char *mode); 如何处理在Windows上存储为const wchar_t* Unicode文件路径? 在类UNIX平台上,您只需将文件路径转换为UTF-8并调用gzopen(),但这在Windows上无效。

用于C / C ++的可移植且简单的unicode字符串库?

我正在寻找一个可移植且易于使用的C / C ++字符串库,它可以帮助我使用Unicode输入/输出。 在最好的情况下,它会将其字符串以UTF-8存储在内存中,并允许我将字符串从ASCII转换为UTF-8 / UTF-16并返回。 除此之外我不需要更多(好吧,自由执照不会受到伤害)。 我已经看到C ++带有一个标头,但这似乎只适用于wchar_t ,可能是也可能不是UTF-16编码,而且我不确定这实际上有多好。 用例例如:在Windows上,unicode API需要UTF-16字符串,我需要转换ASCII或UTF-8字符串以将其传递给API。 同样适用于XML解析,它可能带有UTF-16,但我实际上只想用UTF-8内部处理(或者,就此而言,如果我内部切换到UTF-16,我需要转换为无论如何)。 到目前为止,我已经看过ICU ,这是非常巨大的。 此外,它希望使用它自己的项目文件构建,而我更喜欢一个库,其中有一个CMake项目或易于构建(类似编译所有这些.c文件,链接和好去)而不是像我的应用程序那样运送大型ICU。 你知道这样的图书馆吗? 毕竟,这似乎是一个非常基本的问题。

Objective-C:unichar与char

我在unichar和char之间有点困惑。 我可以将unichar与char相似吗? 例如,我可以这样做: -(BOOL)isNewLine:(unichar)c { if(c == ‘\n’) return YES; else return NO; }

在C中将char *转换为wchar *

我想在C中将char*字符串转换为wchar*字符串。 我找到了很多答案,但大多数答案都是针对C ++的。 你可以帮帮我吗? 谢谢。