Tag: unicode

C库将unicode代码点转换为UTF8?

我必须经历一些文本并根据字符模式编写UTF8输出。 我认为如果我可以使用代码点并将其转换为UTF8将会很容易。 我一直在阅读有关unicode和UTF8的内容,但无法找到一个好的解决方案。 任何帮助将不胜感激。

Unicode存储在C char中

我现在正在Linux上学习C语言,而且我遇到了一些奇怪的情况。 据我所知,标准C的char数据类型是ASCII,1字节(8位)。 它应该意味着它只能包含ASCII字符。 在我的程序中,我使用char input[] ,它由getchar函数填充,就像这个伪代码: char input[20]; int z, i; for(i = 0; i < 20; i++) { z = getchar(); input[i] = z; } 奇怪的是它不仅适用于ASCII字符,而且适用于我想象的任何字符,例如@&@{čřžŧ¶’`[łĐŧđж←^€~[←^ø{&}čž输入。 我的问题是 – 怎么可能? 它似乎是C中许多美丽的例外之一,但我真的很感激解释。 这是操作系统,编译器,隐藏语言的附加超级function吗? 谢谢。

如何初始化wchar_t变量?

我正在读这本书: C:在一个坚果壳中 ,在阅读了关于宽字符的字符集部分后,我写了这个程序: #include #include #include int main() { wchar_t wc = ‘\x3b1’; wprintf(L”%lc\n”, wc); return 0; } 然后我用gcc编译它,但是gcc给了我这个警告: main.c:7:15:警告:hex转义序列超出范围[默认启用] 并且程序不输出字符α(其unicode为U + 03B1),这是我想要它做的。 如何更改程序以打印字符α?

如何让ncurses输出星体平面unicode字符

我有以下一段非常简单的代码,它应该输出(除其他外)三个unicode字符: /* * To build: * gcc -o curses curses.c -lncursesw * * Expected result: display these chars: * http://www.fileformat.info/info/unicode/char/2603/index.htm (snowman) * http://www.fileformat.info/info/unicode/char/26c4/index.htm (snowman without snow) * http://www.fileformat.info/info/unicode/char/1f638/index.htm (grinning cat face with smiling eyes) * * Looks like ncurses is NOT able to display second and third char * (only the first one is OK…) […]

为什么printf格式的unicode参数没有?

使用printf将双字节字符串格式化为单字节字符串时: printf(“%ls\n”, L”s:\\яшертыHello”); // %ls for a wide string (%s varies meaning depending on the project’s unicode settings). 显然,有些字符不能表示为ascii字符,所以有时我看到双字节字符变成’?’的行为。 标记字符。 但是,这似乎取决于特定的角色。 对于上面的printf,输出是: s:\ 我希望我可以得到类似的东西: s:\??????Hello 我担心我已经丢失了这个例子,但是当我遇到unicode字符时,我觉得有一个字符串,用’?’替换第一个字符串 然后放弃了其余的。 所以,我的问题是,当您将宽字符串格式化为单字节字符串时应该会发生什么。 这里的文档: http : //msdn.microsoft.com/en-us/library/hf4y5e3w.aspx说“字符显示到第一个空字符”。 但是,我没有看到。 这是printf中的一个错误,还是我在某处看到的行为,如果有的话,在哪里。 谢谢你的帮助。 UPDATE 感谢人们给我替代使用printf的答案。 我将改为另一种选择,但出于好奇,我真的很感兴趣为什么printf没有可靠的记录行为。 看起来好像它的实现者不顾一切地使它不起作用。

是否需要wchar_t来支持unicode?

是unicode支持所需的wchar_t类型吗? 如果没有,那么这种多字节类型的重点是什么? 当你用char完成同样的事情时,为什么要使用wchar_t?

在Windows和Linux下,在C中将UTF-16转换为UTF-8

我想知道是否有一个推荐的’交叉’Windows和Linux方法,用于将字符串从UTF-16LE转换为UTF-8? 或者每个环境应该使用不同的方法? 我设法谷歌几个引用’iconv’,但对于somreason我找不到基本转换的样本,例如 – 将wchar_t UTF-16转换为UTF-8。 任何人都可以推荐一种“交叉”的方法,如果您知道参考文献或带样本的指南,我将非常感激。 谢谢,Doori酒吧