相关疑难解决方法(0)

如何检测普通C中的UTF-8?

我正在寻找普通旧C中的代码片段,它检测到给定的字符串是UTF-8编码.我知道正则表达式的解决方案,但由于各种原因,最好避免在这种特殊情况下使用除了普通C之外的任何东西.

正则表达式的解决方案如下所示(警告:省略了各种检查):

#define UTF8_DETECT_REGEXP  "^([\x09\x0A\x0D\x20-\x7E]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})*$"

const char *error;
int         error_off;
int         rc;
int         vect[100];

utf8_re = pcre_compile(UTF8_DETECT_REGEXP, PCRE_CASELESS, &error, &error_off, NULL);
utf8_pe = pcre_study(utf8_re, 0, &error);

rc = pcre_exec(utf8_re, utf8_pe, str, len, 0, 0, vect, sizeof(vect)/sizeof(vect[0]));

if (rc > 0) {
    printf("string is in UTF8\n");
} else {
    printf("string is not in UTF8\n")
}
Run Code Online (Sandbox Code Playgroud)

c utf-8

33
推荐指数
4
解决办法
3万
查看次数

检测'文本'文件类型(ANSI与UTF-8)

我在Delphi(7)中编写了一个应用程序(心理测试考试),它创建了一个标准的文本文件 - 即该文件的类型为ANSI.

有人将程序移植到Internet上运行,可能使用Java,生成的文本文件类型为UTF-8.

读取这些结果文件的程序必须读取Delphi创建的文件和通过Internet创建的文件.

虽然我可以将UTF-8文本转换为ANSI(使用狡猾命名的函数UTF8ToANSI),但我怎么能提前告诉我有哪种文件?

看到我'拥有'文件格式,我想最简单的处理方法是在文件中放置一个已知位置的标记,这将告诉我程序的来源(Delphi/Internet),但这似乎作弊.

提前致谢.

delphi utf-8 delphi-7

8
推荐指数
2
解决办法
2万
查看次数

标签 统计

utf-8 ×2

c ×1

delphi ×1

delphi-7 ×1