Tag: unicode

如何正确打印__FILE__扩展的字符串?

考虑这个程序: #include int main() { printf(“%s\n”, __FILE__); return 0; } 根据文件的名称,此程序可以工作 – 或不工作。 我面临的问题是我想以编码安全的方式打印当前文件的名称。 但是,如果文件具有无法在当前代码页中表示的有趣字符,则编译器会发出警告(这是正确的): ?????????.c(3) : warning C4566: character represented by universal-character-name ‘\u043F’ cannot be represented in the current code page (1252) 我该如何解决这个问题? 我想将__FILE__给出的字符串存储在例如UTF-16中,这样我就可以在运行时在任何其他系统上正确打印它(通过将存储的UTF-16表示转换为运行时系统使用的任何表示)。 为此,我需要知道: __FILE__给出的字符串使用了什么编码? 看来,至少在Windows上,使用了当前的系统代码页(在我的例子中是Windows-1252) – 但这只是猜测。 这是真的? 如何在构建时将源代码中的字符串的UTF-8(或UTF-16)表示存储起来? 我的真实用例:我有一个跟踪当前程序执行的宏,将当前源代码/行号信息写入文件。 它看起来像这样: struct LogFile { // Write message to file. The file should […]

swprintf在8位范围之外的字符上扼流圈

这发生在OS X上,但我怀疑它适用于任何UNIX-y操作系统。 我有两个字符串,如下所示: const wchar_t * test1 =(const wchar_t *)“\ x44 \ x00 \ x00 \ x00 \ x73 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00”; const wchar_t * test2 =(const wchar_t *)“\ x44 \ x00 \ x00 \ x00 \ x19 \ x20 \ x00 \ x00 […]

strlen如何计算c中的unicode

我很好奇strlen如何计算C中多个字节的unicode字符。 是否计算每个字节或字符(因为它们可以包含几个字节),直到第一个’\ 0’?

C11 Unicode支持

我正在写一些类似于atoi()或strtoll()字符串转换函数。 我想要包含一个我的函数版本,它接受char16_t *或char32_t *而不仅仅是char *或wchar_t *。 我的function很好,但正如我写的那样,我意识到我不明白char16_t或char32_t是什么。 我知道标准只要求它们分别是至少16位或32位的整数类型,但暗示它们是UTF-16或UTF-32。 我也知道标准定义了几个函数,但它们没有包含任何* get或* put函数(就像它们在C99中的wchar.h中添加时那样)。 所以我想知道:他们期望我用char16_t和char32_t做什么?

将unicode代码点转换为UTF-8的最简单方法

在C中将Unicode代码点转换为UTF-8字节序列的最简单方法是什么? 想到的唯一方法是使用iconv从UTF-32LE代码页映射到UTF-8,但这看起来有点过分。

如何“解码”UTF-8角色?

我们假设我想编写一个函数来比较两个Unicode字符。 我该怎么做? 我读了一些文章(像这样 ),但仍然没有。 我们以€作为输入。 它在0x0800和0xFFFF范围内,因此它将使用3个字节对其进行编码。 我该如何解码呢? 按位操作从wchar_t获取3个字节并存储到3个char ? C中的示例中的代码可能很棒。 这是我的C代码“解码”,但显然错误的值解码unicode … #include #include void printbin(unsigned n); int length(wchar_t c); void print(struct Bytes *b); // support for UTF8 which encodes up to 4 bytes only struct Bytes { char v1; char v2; char v3; char v4; }; int main(void) { struct Bytes bytes = { […]

是否可以使用Unicode“argv”?

我正在为一个使用文件作为参数的应用程序编写一个小包装器。 包装器需要是Unicode,所以我使用wchar_t作为我拥有的字符和字符串。 现在我发现自己遇到了问题,我需要在wchar_t和wchar_t字符串数组中包含程序的参数。 可能吗? 我将mainfunction定义为 int main(int argc, char *argv[]) 我应该将wchar_t用于argv吗? 非常感谢,我似乎没有找到有关如何在C中正确使用Unicode的有用信息。

Visual C ++:将传统的C和C ++字符串代码迁移到Unicode世界

我看到Visual Studio 2008及更高版本现在开始使用字符集设置为Unicode的新解决方案。 我的旧C ++代码只处理英文ASCII文本,并且满是: 像”Hello World”这样的文字字符串 char类型 char *指向已分配C字符串的指针 STL string类型 使用STL string构造函数(接受const char * )和STL string.c_str()从STL string到C字符串的转换,反之亦然 我需要对迁移此代码进行哪些更改,以便它在Visual Studio Unicode和Unicode启用的库的生态系统中工作? (我不需要它同时使用ASCII和Unicode,它可以是纯Unicode。) 是否也可以以独立于平台的方式执行此操作? (即,不使用Microsoft类型。) 我看到很多广泛的字符和Unicode类型和转换散落在周围,因此我的困惑。 (例如:wchar_t,TCHAR,_T,_TEXT,TEXT等)

用于C / C ++的小型开源Unicode库

有谁知道一个用于C或C ++的小型开源Unicode处理库? 我看过ICU ,但看起来太大了。 我需要图书馆来支持: 所有正常的编码 正常化 查找字符类型 – 查找标识符和注释中是否应允许使用字符 validation – 识别废话

如何SubString,限制使用C?

第1号 #include #include #include #include int main(int argc, char **argv) { static const unsigned char text[] = “000ßh123456789”; int32_t current=1; int32_t text_len = strlen(text)-1; ///////////////////////////////// printf(“Result : %s\n”,text); ///////////////////////////////// printf(“Lenght : %d\n”,text_len); ///////////////////////////////// printf(“Index0 : %c\n”,text[0]); printf(“Index1 : %c\n”,text[1]); printf(“Index2 : %c\n”,text[2]); printf(“Index3 : %c\n”,text[3]);//==> why show this ` `? printf(“Index4 : %c\n”,text[4]);//==> why show […]