如何在C++中使用大写/小写UTF-8字符?

aar*_*rkk 11 c++ string unicode utf-8

我们假设我有一个std::string包含以下内容的UTF-8编码:

óó

我想将其转换为以下内容:

ÓÓ

理想情况下,我希望我使用的大写/小写方法在所有UTF-8中都是通用的.如果这是可能的.

字符串中的原始字节序列是0xc3b3c3b3(每个字符两个字节,两个实例ó),我希望输出为0xc393c393(两个实例Ó).StackOverflow上有一些示例,但它们使用宽字符串,而其他答案则表示您不应该为UTF-8使用宽字符串.看来这个问题可能非常"棘手",因为输出可能依赖于用户的语言环境.

我本来希望只是使用类似的东西std::toupper(),但我的用法真的不清楚,因为我似乎不是一次只转换一个字符而是整个字符串.此外,该Ideone例如我放在一起,似乎表明toupper()0xc3b3只是0xc3b3,这是一个意外的结果.调用setlocaleUTF-8或ISO8859-1似乎不会改变结果.

如果你能够解释我做错了什么或为什么我的问题/前提是错误的,我会喜欢一些指导!

Nic*_*las 8

在 C++ 中没有进行 Unicode 大小写转换的标准方法。有一些方法适用于某些C++ 实现,但标准并不要求它们这样做。

如果你想要保证 Unicode 大小写转换,你需要使用像ICU或 Boost.Locale这样的库(又名:ICU 具有更像 C++ 的界面)。

  • @aardvarkk:如果实现没有实现`en_US.UTF-8`。此外,如果实现不为其 `wchar_t` 使用 Unicode 格式。标准*保证*中没有任何内容。宽字符串与窄字符串一样是实现定义的。此外,另一个答案没有使用 UTF-8,这是您要求的一部分。 (3认同)

Jan*_*röm 8

此代码是经过仔细测试的 UTF8 大小写转换/不区分大小写的 cmp。

\n

它应该是正确的(如果发现任何错误请告诉)。

\n

该函数涵盖了 UTF8 中区分大小写的字符集以及如何将其用于 cmp。

\n
unsigned char* StrToUprExt(unsigned char* pString) (separate answer below, answer space)\nunsigned char* StrToLwrExt(unsigned char* pString)\nint StrnCiCmp(const char* s1, const char* s2, size_t ztCount)\nint StrCiCmp(const char* s1, const char* s2)\nchar* StrCiStr(const char* s1, const char* s2)\n
Run Code Online (Sandbox Code Playgroud)\n

这些字符要被转换:

\n

\xc3\x80\xc3\x81\xc3\x82\xc3\x83\xc3\x84\xc3\x85\xc3\x86\xc3\x87\xc3\x88\xc3\x89\xc3\x8a\xc3\x8b\xc3 \x8c\xc3\x8d\xc3\x8e\xc3\x8f\xc3\x90\xc3\x91\xc3\x92\xc3\x93\xc3\x94\xc3\x95\xc3\x96\xc3\x98\xc3\x99 \xc3\x9a\xc3\x9b\xc3\x9c\xc3\x9d\xc3\x9e\xc4\x80\xc4\x82\xc4\x84\xc4\x86\xc4\x88\xc4\x8a\xc4\x8c\xc4 \x8e\xc4\x90\xc4\x92\xc4\x94\xc4\x96\xc4\x98\xc4\x9a\xc4\x9c\xc4\x9e\xc4\xa0\xc4\xa2\xc4\xa4\xc4\xa6 \xc4\xa8\xc4\xaa\xc4\xac\xc4\xae\xc4\xb0\xc4\xb2\xc4\xb4\xc4\xb6\xc4\xb9\xc4\xbb\xc4\xbd\xc4\xbf\xc5 \x81\xc5\x83\xc5\x85\xc5\x87\xc5\x8a\xc5\x8c\xc5\x8e\xc5\x90\xc5\x92\xc5\x94\xc5\x96\xc5\x98\xc5\x9a \xc5\x9c\xc5\x9e\xc5\xa0\xc5\xa2\xc5\xa4\xc5\xa6\xc5\xa8\xc5\xaa\xc5\xac\xc5\xae\xc5\xb0\xc5\xb2\xc5 \xb4\xc5\xb6\xc5\xb8\xc5\xb9\xc5\xbb\xc5\xbd\xc6\x81\xc6\x82\xc6\x84\xc6\x86\xc6\x87\xc6\x8a\xc6\x8b \xc6\x8e\xc6\x8f\xc6\x90\xc6\x91\xc6\x93\xc6\x94\xc6\x96\xc6\x97\xc6\x98\xc6\x9c\xc6\x9d\xc6\xa0\xc6 \xa2\xc6\xa4\xc6\xa7\xc6\xa9\xc6\xac\xc6\xae\xc6\xaf\xc6\xb1\xc6\xb2\xc6\xb3\xc6\xb5\xc6\xb7\xc6\xb8 \xc6\xbc\xc7\x84\xc7\x85\xc7\x87\xc7\x88\xc7\x8a\xc7\x8b\xc7\x8d\xc7\x8f\xc7\x91\xc7\x93\xc7\x95\xc7 \x97\xc7\x99\xc7\x9b\xc7\x9e\xc7\xa0\xc7\xa2\xc7\xa4\xc7\xa6\xc7\xa8\xc7\xaa\xc7\xac\xc7\xae\xc7\xb1 \xc7\xb2\xc7\xb4\xc7\xb6\xc7\xb7\xc7\xb8\xc7\xba\xc7\xbc\xc7\xbe\xc8\x80\xc8\x82\xc8\x84\xc8\x86\xc8 \x88\xc8\x8a\xc8\x8c\xc8\x8e\xc8\x90\xc8\x92\xc8\x94\xc8\x96\xc8\x98\xc8\x9a\xc8\x9c\xc8\x9e\xc8\xa0 \xc8\xa2\xc8\xa4\xc8\xa6\xc8\xa8\xc8\xaa\xc8\xac\xc8\xae\xc8\xb0\xc8\xb2\xc8\xba\xc8\xbb\xc8\xbd\xc8 \xbe\xc9\x81\xc9\x83\xc9\x84\xc9\x85\xc9\x86\xc9\x88\xc9\x8a\xc9\x8c\xc9\x8e\xcd\xb0\xcd\xb2\xcd\xb6 \xcd\xbf\xce\x86\xce\x88\xce\x89\xce\x8a\xce\x8c\xce\x8e\xce\x8f\xce\x91\xce\x92\xce\x93\xce\x94\xce \x95\xce\x96\xce\x97\xce\x98\xce\x99\xce\x9a\xce\x9b\xce\x9c\xce\x9d\xce\x9e\xce\x9f\xce\xa0\xce\xa1 \xce\xa3\xce\xa4\xce\xa5\xce\xa6\xce\xa7\xce\xa8\xce\xa9\xce\xaa\xce\xab\xcf\x8f\xcf\x98\xcf\x9a\xcf \x9c\xcf\x9e\xcf\xa0\xcf\xa2\xcf\xa4\xcf\xa6\xcf\xa8\xcf\xaa\xcf\xac\xcf\xae\xcf\xb4\xcf\xb7\xcf\xb9 \xcf\xba\xcf\xbd\xcf\xbe\xcf\xbf\xd0\x80\xd0\x81\xd0\x82\xd0\x83\xd0\x84\xd0\x85\xd0\x86\xd0\x87\xd0 \x88\xd0\x89\xd0\x8a\xd0\x8b\xd0\x8c\xd0\x8d\xd0\x8e\xd0\x8f\xd0\x90\xd0\x91\xd0\x92\xd0\x93\xd0\x94 \xd0\x95\xd0\x96\xd0\x97\xd0\x98\xd0\x99\xd0\x9a\xd0\x9b\xd0\x9c\xd0\x9d\xd0\x9e\xd0\x9f\xd0\xa0\xd0 \xa1\xd0\xa2\xd0\xa3\xd0\xa4\xd0\xa5\xd0\xa6\xd0\xa7\xd0\xa8\xd0\xa9\xd0\xaa\xd0\xab\xd0\xac\xd0\xad \xd0\xae\xd0\xaf\xd1\xa0\xd1\xa2\xd1\xa4\xd1\xa6\xd1\xa8\xd1\xaa\xd1\xac\xd1\xae\xd1\xb0\xd1\xb2\xd1 \xb4\xd1\xb6\xd1\xb8\xd1\xba\xd1\xbc\xd1\xbe\xd2\x80\xd2\x8a\xd2\x8c\xd2\x8e\xd2\x90\xd2\x92\xd2\x94 \xd2\x96\xd2\x98\xd2\x9a\xd2\x9c\xd2\x9e\xd2\xa0\xd2\xa2\xd2\xa4\xd2\xa6\xd2\xa8\xd2\xaa\xd2\xac\xd2 \xae\xd2\xb0\xd2\xb2\xd2\xb4\xd2\xb6\xd2\xb8\xd2\xba\xd2\xbc\xd2\xbe\xd3\x80\xd3\x81\xd3\x83\xd3\x85 \xd3\x87\xd3\x89\xd3\x8b\xd3\x8d\xd3\x90\xd3\x92\xd3\x94\xd3\x96\xd3\x98\xd3\x9a\xd3\x9c\xd3\x9e\xd3 \xa0\xd3\xa2\xd3\xa4\xd3\xa6\xd3\xa8\xd3\xaa\xd3\xac\xd3\xae\xd3\xb0\xd3\xb2\xd3\xb4\xd3\xb6\xd3\xb8\xd3\xba\xd3\xbc\xd3\xbe\xd4\x80\xd4\x82\xd4\x84\xd4\x86\xd4\x88\xd4\x8a\xd4\x8c\xd4\x8e\xd4\x90\xd4 \x92\xd4\x94\xd4\x96\xd4\x98\xd4\x9a\xd4\x9c\xd4\x9e\xd4\xa0\xd4\xa2\xd4\xa4\xd4\xa6\xd4\xa8\xd4\xaa \xd4\xac\xd4\xae\xd4\xb1\xd4\xb2\xd4\xb3\xd4\xb4\xd4\xb5\xd4\xb6\xd4\xb7\xd4\xb8\xd4\xb9\xd4\xba\xd4 \xbb\xd4\xbc\xd4\xbd\xd4\xbe\xd4\xbf\xd5\x80\xd5\x81\xd5\x82\xd5\x83\xd5\x84\xd5\x85\xd5\x86\xd5\x87 \xd5\x88\xd5\x89\xd5\x8a\xd5\x8b\xd5\x8c\xd5\x8d\xd5\x8e\xd5\x8f\xd5\x90\xd5\x91\xd5\x92\xd5\x93\xd5 \x94\xd5\x95\xd5\x96\xe1\x82\xa0\xe1\x82\xa1\xe1\x82\xa2\xe1\x82\xa3\xe1\x82\xa4\xe1\x82\xa5\xe1\x82 \xa6\xe1\x82\xa7\xe1\x82\xa8\xe1\x82\xa9\xe1\x82\xaa\xe1\x82\xab\xe1\x82\xac\xe1\x82\xad\xe1\x82\xae \xe1\x82\xaf\xe1\x82\xb0\xe1\x82\xb1\xe1\x82\xb2\xe1\x82\xb3\xe1\x82\xb4\xe1\x82\xb5\xe1\x82\xb6\xe1 \x82\xb7\xe1\x82\xb8\xe1\x82\xb9\xe1\x82\xba\xe1\x82\xbb\xe1\x82\xbc\xe1\x82\xbd\xe1\x82\xbe\xe1\x82 \xbf\xe1\x83\x80\xe1\x83\x81\xe1\x83\x82\xe1\x83\x83\xe1\x83\x84\xe1\x83\x85\xe1\x83\x87\xe1\x83\x8d \xe1\x8e\xa0\xe1\x8e\xa1\xe1\x8e\xa2\xe1\x8e\xa3\xe1\x8e\xa4\xe1\x8e\xa5\xe1\x8e\xa6\xe1\x8e\xa7\xe1 \x8e\xa8\xe1\x8e\xa9\xe1\x8e\xaa\xe1\x8e\xab\xe1\x8e\xac\xe1\x8e\xad\xe1\x8e\xae\xe1\x8e\xaf\xe1\x8e \xb0\xe1\x8e\xb1\xe1\x8e\xb2\xe1\x8e\xb3\xe1\x8e\xb4\xe1\x8e\xb5\xe1\x8e\xb6\xe1\x8e\xb7\xe1\x8e\xb8 \xe1\x8e\xb9\xe1\x8e\xba\xe1\x8e\xbb\xe1\x8e\xbc\xe1\x8e\xbd\xe1\x8e\xbe\xe1\x8e\xbf\xe1\x8f\x80\xe1 \x8f\x81\xe1\x8f\x82\xe1\x8f\x83\xe1\x8f\x84\xe1\x8f\x85\xe1\x8f\x86\xe1\x8f\x87\xe1\x8f\x88\xe1\x8f \x89\xe1\x8f\x8a\xe1\x8f\x8b\xe1\x8f\x8c\xe1\x8f\x8d\xe1\x8f\x8e\xe1\x8f\x8f\xe1\x8f\x90\xe1\x8f\x91 \xe1\x8f\x92\xe1\x8f\x93\xe1\x8f\x94\xe1\x8f\x95\xe1\x8f\x96\xe1\x8f\x97\xe1\x8f\x98\xe1\x8f\x99\xe1 \x8f\x9a\xe1\x8f\x9b\xe1\x8f\x9c\xe1\x8f\x9d\xe1\x8f\x9e\xe1\x8f\x9f\xe1\x8f\xa0\xe1\x8f\xa1\xe1\x8f \xa2\xe1\x8f\xa3\xe1\x8f\xa4\xe1\x8f\xa5\xe1\x8f\xa6\xe1\x8f\xa7\xe1\x8f\xa8\xe1\x8f\xa9\xe1\x8f\xaa \xe1\x8f\xab\xe1\x8f\xac\xe1\x8f\xad\xe1\x8f\xae\xe1\x8f\xaf\xe1\x8f\xb0\xe1\x8f\xb1\xe1\x8f\xb2\xe1 \x8f\xb3\xe1\x8f\xb4\xe1\x8f\xb5\xe1\xb2\x90\xe1\xb2\x91\xe1\xb2\x92\xe1\xb2\x93\xe1\xb2\x94\xe1\xb2 \x95\xe1\xb2\x96\xe1\xb2\x97\xe1\xb2\x98\xe1\xb2\x99\xe1\xb2\x9a\xe1\xb2\x9b\xe1\xb2\x9c\xe1\xb2\x9d \xe1\xb2\x9e\xe1\xb2\x9f\xe1\xb2\xa0\xe1\xb2\xa1\xe1\xb2\xa2\xe1\xb2\xa3\xe1\xb2\xa4\xe1\xb2\xa5\xe1 \xb2\xa6\xe1\xb2\xa7\xe1\xb2\xa8\xe1\xb2\xa9\xe1\xb2\xaa\xe1\xb2\xab\xe1\xb2\xac\xe1\xb2\xad\xe1\xb2 \xae\xe1\xb2\xaf\xe1\xb2\xb0\xe1\xb2\xb1\xe1\xb2\xb2\xe1\xb2\xb3\xe1\xb2\xb4\xe1\xb2\xb5\xe1\xb2\xb6 \xe1\xb2\xb7\xe1\xb2\xb8\xe1\xb2\xb9\xe1\xb2\xba\xe1\xb2\xbd\xe1\xb2\xbe\xe1\xb2\xbf\xe1\xb8\x80\xe1 \xb8\x82\xe1\xb8\x84\xe1\xb8\x86\xe1\xb8\x88\xe1\xb8\x8a\xe1\xb8\x8c\xe1\xb8\x8e\xe1\xb8\x90\xe1\xb8 \x92\xe1\xb8\x94\xe1\xb8\x96\xe1\xb8\x98\xe1\xb8\x9a\xe1\xb8\x9c\xe1\xb8\x9e\xe1\xb8\xa0\xe1\xb8\xa2 \xe1\xb8\xa4\xe1\xb8\xa6\xe1\xb8\xa8\xe1\xb8\xaa\xe1\xb8\xac\xe1\xb8\xae\xe1\xb8\xb0\xe1\xb8\xb2\xe1 \xb8\xb4\xe1\xb8\xb6\xe1\xb8\xb8\xe1\xb8\xba\xe1\xb8\xbc\xe1\xb8\xbe\xe1\xb9\x80\xe1\xb9\x82\xe1\xb9\x84\xe1\xb9\x86\xe1\xb9\x88\xe1\xb9\x8a\xe1\xb9\x8c\xe1\xb9\x8e\xe1\xb9\x90\xe1\xb9\x92\xe1\xb9\x94 \xe1\xb9\x96\xe1\xb9\x98\xe1\xb9\x9a\xe1\xb9\x9c\xe1\xb9\x9e\xe1\xb9\xa0\xe1\xb9\xa2\xe1\xb9\xa4\xe1 \xb9\xa6\xe1\xb9\xa8\xe1\xb9\xaa\xe1\xb9\xac\xe1\xb9\xae\xe1\xb9\xb0\xe1\xb9\xb2\xe1\xb9\xb4\xe1\xb9 \xb6\xe1\xb9\xb8\xe1\xb9\xba\xe1\xb9\xbc\xe1\xb9\xbe\xe1\xba\x80\xe1\xba\x82\xe1\xba\x84\xe1\xba\x86 \xe1\xba\x88\xe1\xba\x8a\xe1\xba\x8c\xe1\xba\x8e\xe1\xba\x90\xe1\xba\x92\xe1\xba\x94\xe1\xba\x9e\xe1 \xba\xa0\xe1\xba\xa2\xe1\xba\xa4\xe1\xba\xa6\xe1\xba\xa8\xe1\xba\xaa\xe1\xba\xac\xe1\xba\xae\xe1\xba \xb0\xe1\xba\xb2\xe1\xba\xb4\xe1\xba\xb6\xe1\xba\xb8\xe1\xba\xba\xe1\xba\xbc\xe1\xba\xbe\xe1\xbb\x80 \xe1\xbb\x82\xe1\xbb\x84\xe1\xbb\x86\xe1\xbb\x88\xe1\xbb\x8a\xe1\xbb\x8c\xe1\xbb\x8e\xe1\xbb\x90\xe1 \xbb\x92\xe1\xbb\x94\xe1\xbb\x96\xe1\xbb\x98\xe1\xbb\x9a\xe1\xbb\x9c\xe1\xbb\x9e\xe1\xbb\xa0\xe1\xbb \xa2\xe1\xbb\xa4\xe1\xbb\xa6\xe1\xbb\xa8\xe1\xbb\xaa\xe1\xbb\xac\xe1\xbb\xae\xe1\xbb\xb0\xe1\xbb\xb2 \xe1\xbb\xb4\xe1\xbb\xb6\xe1\xbb\xb8\xe1\xbb\xba\xe1\xbb\xbc\xe1\xbb\xbe\xe1\xbc\x88\xe1\xbc\x89\xe1 \xbc\x8a\xe1\xbc\x8b\xe1\xbc\x8c\xe1\xbc\x8d\xe1\xbc\x8e\xe1\xbc\x8f\xe1\xbc\x98\xe1\xbc\x99\xe1\xbc \x9a\xe1\xbc\x9b\xe1\xbc\x9c\xe1\xbc\x9d\xe1\xbc\xa8\xe1\xbc\xa9\xe1\xbc\xaa\xe1\xbc\xab\xe1\xbc\xac \xe1\xbc\xad\xe1\xbc\xae\xe1\xbc\xaf\xe1\xbc\xb8\xe1\xbc\xb9\xe1\xbc\xba\xe1\xbc\xbb\xe1\xbc\xbc\xe1 \xbc\xbd\xe1\xbc\xbe\xe1\xbc\xbf\xe1\xbd\x88\xe1\xbd\x89\xe1\xbd\x8a\xe1\xbd\x8b\xe1\xbd\x8c\xe1\xbd \x8d\xe1\xbd\x99\xe1\xbd\x9b\xe1\xbd\x9d\xe1\xbd\x9f\xe1\xbd\xa8\xe1\xbd\xa9\xe1\xbd\xaa\xe1\xbd\xab \xe1\xbd\xac\xe1\xbd\xad\xe1\xbd\xae\xe1\xbd\xaf\xe1\xbe\x88\xe1\xbe\x89\xe1\xbe\x8a\xe1\xbe\x8b\xe1 \xbe\x8c\xe1\xbe\x8d\xe1\xbe\x8e\xe1\xbe\x8f\xe1\xbe\x98\xe1\xbe\x99\xe1\xbe\x9a\xe1\xbe\x9b\xe1\xbe \x9c\xe1\xbe\x9d\xe1\xbe\x9e\xe1\xbe\x9f\xe1\xbe\xa8\xe1\xbe\xa9\xe1\xbe\xaa\xe1\xbe\xab\xe1\xbe\xac \xe1\xbe\xad\xe1\xbe\xae\xe1\xbe\xaf\xe1\xbe\xb8\xe1\xbe\xb9\xe1\xbe\xba\xe1\xbe\xbb\xe1\xbe\xbc\xe1 \xbf\x88\xe1\xbf\x89\xe1\xbf\x8a\xe1\xbf\x8b\xe1\xbf\x8c\xe1\xbf\x98\xe1\xbf\x99\xe1\xbf\x9a\xe1\xbf \x9b\xe1\xbf\xa8\xe1\xbf\xa9\xe1\xbf\xaa\xe1\xbf\xab\xe1\xbf\xac\xe1\xbf\xb8\xe1\xbf\xb9\xe1\xbf\xba \xe1\xbf\xbb\xe1\xbf\xbc\xe2\xb0\x80\xe2\xb0\x81\xe2\xb0\x82\xe2\xb0\x83\xe2\xb0\x84\xe2\xb0\x85\xe2 \xb0\x86\xe2\xb0\x87\xe2\xb0\x88\xe2\xb0\x89\xe2\xb0\x8a\xe2\xb0\x8b\xe2\xb0\x8c\xe2\xb0\x8d\xe2\xb0 \x8e\xe2\xb0\x8f\xe2\xb0\x90\xe2\xb0\x91\xe2\xb0\x92\xe2\xb0\x93\xe2\xb0\x94\xe2\xb0\x95\xe2\xb0\x96 \xe2\xb0\x97\xe2\xb0\x98\xe2\xb0\x99\xe2\xb0\x9a\xe2\xb0\x9b\xe2\xb0\x9c\xe2\xb0\x9d\xe2\xb0\x9e\xe2 \xb0\x9f\xe2\xb0\xa0\xe2\xb0\xa1\xe2\xb0\xa2\xe2\xb0\xa3\xe2\xb0\xa4\xe2\xb0\xa5\xe2\xb0\xa6\xe2\xb0 \xa7\xe2\xb0\xa8\xe2\xb0\xa9\xe2\xb0\xaa\xe2\xb0\xab\xe2\xb0\xac\xe2\xb0\xad\xe2\xb0\xae\xe2\xb1\xa0 \xe2\xb1\xa2\xe2\xb1\xa3\xe2\xb1\xa4\xe2\xb1\xa7\xe2\xb1\xa9\xe2\xb1\xab\xe2\xb1\xad\xe2\xb1\xae\xe2 \xb1\xaf\xe2\xb1\xb0\xe2\xb1\xb2\xe2\xb1\xb5\xe2\xb1\xbe\xe2\xb1\xbf\xe2\xb2\x80\xe2\xb2\x82\xe2\xb2\x84\xe2\xb2\x86\xe2\xb2\x88\xe2\xb2\x8a\xe2\xb2\x8c\xe2\xb2\x8e\xe2\xb2\x90\xe2\xb2\x92\xe2\xb2\x94 \xe2\xb2\x96\xe2\xb2\x98\xe2\xb2\x9a\xe2\xb2\x9c\xe2\xb2\x9e\xe2\xb2\xa0\xe2\xb2\xa2\xe2\xb2\xa4\xe2 \xb2\xa6\xe2\xb2\xa8\xe2\xb2\xaa\xe2\xb2\xac\xe2\xb2\xae\xe2\xb2\xb0\xe2\xb2\xb2\xe2\xb2\xb4\xe2\xb2 \xb6\xe2\xb2\xb8\xe2\xb2\xba\xe2\xb2\xbc\xe2\xb2\xbe\xe2\xb3\x80\xe2\xb3\x82\xe2\xb3\x84\xe2\xb3\x86 \xe2\xb3\x88\xe2\xb3\x8a\xe2\xb3\x8c\xe2\xb3\x8e\xe2\xb3\x90\xe2\xb3\x92\xe2\xb3\x94\xe2\xb3\x96\xe2 \xb3\x98\xe2\xb3\x9a\xe2\xb3\x9c\xe2\xb3\x9e\xe2\xb3\xa0\xe2\xb3\xa2\xe2\xb3\xab\xe2\xb3\xad\xe2\xb3 \xb2\xe2\xb4\x80\xe2\xb4\x81\xe2\xb4\x82\xe2\xb4\x83\xe2\xb4\x84\xe2\xb4\x85\xe2\xb4\x86\xe2\xb4\x87 \xe2\xb4\x88\xe2\xb4\x89\xe2\xb4\x8a\xe2\xb4\x8b\xe2\xb4\x8c\xe2\xb4\x8d\xe2\xb4\x8e\xe2\xb4\x8f\xe2 \xb4\x90\xe2\xb4\x91\xe2\xb4\x92\xe2\xb4\x93\xe2\xb4\x94\xe2\xb4\x95\xe2\xb4\x96\xe2\xb4\x97\xe2\xb4 \x98\xe2\xb4\x99\xe2\xb4\x9a\xe2\xb4\x9b\xe2\xb4\x9c\xe2\xb4\x9d\xe2\xb4\x9e\xe2\xb4\x9f\xe2\xb4\xa0 \xe2\xb4\xa1\xe2\xb4\xa2\xe2\xb4\xa3\xe2\xb4\xa4\xe2\xb4\xa5\xe2\xb4\xa7\xe2\xb4\xad\xea\x99\x80\xea \x99\x82\xea\x99\x84\xea\x99\x86\xea\x99\x88\xea\x99\x8a\xea\x99\x8c\xea\x99\x8e\xea\x99\x90\xea\x99 \x92\xea\x99\x94\xea\x99\x96\xea\x99\x98\xea\x99\x9a\xea\x99\x9c\xea\x99\x9e\xea\x99\xa0\xea\x99\xa2 \xea\x99\xa4\xea\x99\xa6\xea\x99\xa8\xea\x99\xaa\xea\x99\xac\xea\x9a\x80\xea\x9a\x82\xea\x9a\x84\xea \x9a\x86\xea\x9a\x88\xea\x9a\x8a\xea\x9a\x8c\xea\x9a\x8e\xea\x9a\x90\xea\x9a\x92\xea\x9a\x94\xea\x9a \x96\xea\x9a\x98\xea\x9a\x9a\xea\x9c\xa2\xea\x9c\xa4\xea\x9c\xa6\xea\x9c\xa8\xea\x9c\xaa\xea\x9c\xac \xea\x9c\xae\xea\x9c\xb2\xea\x9c\xb4\xea\x9c\xb6\xea\x9c\xb8\xea\x9c\xba\xea\x9c\xbc\xea\x9c\xbe\xea \x9d\x80\xea\x9d\x82\xea\x9d\x84\xea\x9d\x86\xea\x9d\x88\xea\x9d\x8a\xea\x9d\x8c\xea\x9d\x8e\xea\x9d \x90\xea\x9d\x92\xea\x9d\x94\xea\x9d\x96\xea\x9d\x98\xea\x9d\x9a\xea\x9d\x9c\xea\x9d\x9e\xea\x9d\xa0 \xea\x9d\xa2\xea\x9d\xa4\xea\x9d\xa6\xea\x9d\xa8\xea\x9d\xaa\xea\x9d\xac\xea\x9d\xae\xea\x9d\xb9\xea \x9d\xbb\xea\x9d\xbd\xea\x9d\xbe\xea\x9e\x80\xea\x9e\x82\xea\x9e\x84\xea\x9e\x86\xea\x9e\x8b\xea\x9e \x8d\xea\x9e\x90\xea\x9e\x92\xea\x9e\x96\xea\x9e\x98\xea\x9e\x9a\xea\x9e\x9c\xea\x9e\x9e\xea\x9e\xa0 \xea\x9e\xa2\xea\x9e\xa4\xea\x9e\xa6\xea\x9e\xa8\xea\x9e\xaa\xea\x9e\xab\xea\x9e\xac\xea\x9e\xad\xea \x9e\xae\xea\x9e\xb0\xea\x9e\xb1\xea\x9e\xb2\xea\x9e\xb3\xea\x9e\xb4\xea\x9e\xb6\xea\x9e\xb8\xea\x9e \xba\xea\x9e\xbc\xea\x9e\xbe\xea\x9f\x82\xea\x9f\x84\xea\x9f\x85\xea\x9f\x86\xea\x9f\x87\xea\x9f\x89 \xea\x9f\xb5\xef\xbc\xa1\xef\xbc\xa2\xef\xbc\xa3\xef\xbc\xa4\xef\xbc\xa5\xef\xbc\xa6\xef\xbc\xa7\xef \xbc\xa8\xef\xbc\xa9\xef\xbc\xaa\xef\xbc\xab\xef\xbc\xac\xef\xbc\xad\xef\xbc\xae\xef\xbc\xaf\xef\xbc \xb0\xef\xbc\xb1\xef\xbc\xb2\xef\xbc\xb3\xef\xbc\xb4\xef\xbc\xb5\xef\xbc\xb6\xef\xbc\xb7\xef\xbc\xb8 \xef\xbc\xb9\xef\xbc\xba\xb2\xa2\xe2\xb2\xa4\xe2\xb2\xa6\xe2\xb2\xa8\xe2\xb2\xaa\xe2\xb2\xac\xe2\xb2\xae\xe2\xb2\xb0\xe2\xb2 \xb2\xe2\xb2\xb4\xe2\xb2\xb6\xe2\xb2\xb8\xe2\xb2\xba\xe2\xb2\xbc\xe2\xb2\xbe\xe2\xb3\x80\xe2\xb3\x82 \xe2\xb3\x84\xe2\xb3\x86\xe2\xb3\x88\xe2\xb3\x8a\xe2\xb3\x8c\xe2\xb3\x8e\xe2\xb3\x90\xe2\xb3\x92\xe2 \xb3\x94\xe2\xb3\x96\xe2\xb3\x98\xe2\xb3\x9a\xe2\xb3\x9c\xe2\xb3\x9e\xe2\xb3\xa0\xe2\xb3\xa2\xe2\xb3 \xab\xe2\xb3\xad\xe2\xb3\xb2\xe2\xb4\x80\xe2\xb4\x81\xe2\xb4\x82\xe2\xb4\x83\xe2\xb4\x84\xe2\xb4\x85 \xe2\xb4\x86\xe2\xb4\x87\xe2\xb4\x88\xe2\xb4\x89\xe2\xb4\x8a\xe2\xb4\x8b\xe2\xb4\x8c\xe2\xb4\x8d\xe2 \xb4\x8e\xe2\xb4\x8f\xe2\xb4\x90\xe2\xb4\x91\xe2\xb4\x92\xe2\xb4\x93\xe2\xb4\x94\xe2\xb4\x95\xe2\xb4 \x96\xe2\xb4\x97\xe2\xb4\x98\xe2\xb4\x99\xe2\xb4\x9a\xe2\xb4\x9b\xe2\xb4\x9c\xe2\xb4\x9d\xe2\xb4\x9e \xe2\xb4\x9f\xe2\xb4\xa0\xe2\xb4\xa1\xe2\xb4\xa2\xe2\xb4\xa3\xe2\xb4\xa4\xe2\xb4\xa5\xe2\xb4\xa7\xe2 \xb4\xad\xea\x99\x80\xea\x99\x82\xea\x99\x84\xea\x99\x86\xea\x99\x88\xea\x99\x8a\xea\x99\x8c\xea\x99 \x8e\xea\x99\x90\xea\x99\x92\xea\x99\x94\xea\x99\x96\xea\x99\x98\xea\x99\x9a\xea\x99\x9c\xea\x99\x9e \xea\x99\xa0\xea\x99\xa2\xea\x99\xa4\xea\x99\xa6\xea\x99\xa8\xea\x99\xaa\xea\x99\xac\xea\x9a\x80\xea \x9a\x82\xea\x9a\x84\xea\x9a\x86\xea\x9a\x88\xea\x9a\x8a\xea\x9a\x8c\xea\x9a\x8e\xea\x9a\x90\xea\x9a \x92\xea\x9a\x94\xea\x9a\x96\xea\x9a\x98\xea\x9a\x9a\xea\x9c\xa2\xea\x9c\xa4\xea\x9c\xa6\xea\x9c\xa8 \xea\x9c\xaa\xea\x9c\xac\xea\x9c\xae\xea\x9c\xb2\xea\x9c\xb4\xea\x9c\xb6\xea\x9c\xb8\xea\x9c\xba\xea \x9c\xbc\xea\x9c\xbe\xea\x9d\x80\xea\x9d\x82\xea\x9d\x84\xea\x9d\x86\xea\x9d\x88\xea\x9d\x8a\xea\x9d \x8c\xea\x9d\x8e\xea\x9d\x90\xea\x9d\x92\xea\x9d\x94\xea\x9d\x96\xea\x9d\x98\xea\x9d\x9a\xea\x9d\x9c \xea\x9d\x9e\xea\x9d\xa0\xea\x9d\xa2\xea\x9d\xa4\xea\x9d\xa6\xea\x9d\xa8\xea\x9d\xaa\xea\x9d\xac\xea \x9d\xae\xea\x9d\xb9\xea\x9d\xbb\xea\x9d\xbd\xea\x9d\xbe\xea\x9e\x80\xea\x9e\x82\xea\x9e\x84\xea\x9e \x86\xea\x9e\x8b\xea\x9e\x8d\xea\x9e\x90\xea\x9e\x92\xea\x9e\x96\xea\x9e\x98\xea\x9e\x9a\xea\x9e\x9c \xea\x9e\x9e\xea\x9e\xa0\xea\x9e\xa2\xea\x9e\xa4\xea\x9e\xa6\xea\x9e\xa8\xea\x9e\xaa\xea\x9e\xab\xea \x9e\xac\xea\x9e\xad\xea\x9e\xae\xea\x9e\xb0\xea\x9e\xb1\xea\x9e\xb2\xea\x9e\xb3\xea\x9e\xb4\xea\x9e \xb6\xea\x9e\xb8\xea\x9e\xba\xea\x9e\xbc\xea\x9e\xbe\xea\x9f\x82\xea\x9f\x84\xea\x9f\x85\xea\x9f\x86 \xea\x9f\x87\xea\x9f\x89\xea\x9f\xb5\xef\xbc\xa1\xef\xbc\xa2\xef\xbc\xa3\xef\xbc\xa4\xef\xbc\xa5\xef \xbc\xa6\xef\xbc\xa7\xef\xbc\xa8\xef\xbc\xa9\xef\xbc\xaa\xef\xbc\xab\xef\xbc\xac\xef\xbc\xad\xef\xbc \xae\xef\xbc\xaf\xef\xbc\xb0\xef\xbc\xb1\xef\xbc\xb2\xef\xbc\xb3\xef\xbc\xb4\xef\xbc\xb5\xef\xbc\xb6 \xef\xbc\xb7\xef\xbc\xb8\xef\xbc\xb9\xef\xbc\xba\xb2\xa2\xe2\xb2\xa4\xe2\xb2\xa6\xe2\xb2\xa8\xe2\xb2\xaa\xe2\xb2\xac\xe2\xb2\xae\xe2\xb2\xb0\xe2\xb2 \xb2\xe2\xb2\xb4\xe2\xb2\xb6\xe2\xb2\xb8\xe2\xb2\xba\xe2\xb2\xbc\xe2\xb2\xbe\xe2\xb3\x80\xe2\xb3\x82 \xe2\xb3\x84\xe2\xb3\x86\xe2\xb3\x88\xe2\xb3\x8a\xe2\xb3\x8c\xe2\xb3\x8e\xe2\xb3\x90\xe2\xb3\x92\xe2 \xb3\x94\xe2\xb3\x96\xe2\xb3\x98\xe2\xb3\x9a\xe2\xb3\x9c\xe2\xb3\x9e\xe2\xb3\xa0\xe2\xb3\xa2\xe2\xb3 \xab\xe2\xb3\xad\xe2\xb3\xb2\xe2\xb4\x80\xe2\xb4\x81\xe2\xb4\x82\xe2\xb4\x83\xe2\xb4\x84\xe2\xb4\x85 \xe2\xb4\x86\xe2\xb4\x87\xe2\xb4\x88\xe2\xb4\x89\xe2\xb4\x8a\xe2\xb4\x8b\xe2\xb4\x8c\xe2\xb4\x8d\xe2 \xb4\x8e\xe2\xb4\x8f\xe2\xb4\x90\xe2\xb4\x91\xe2\xb4\x92\xe2\xb4\x93\xe2\xb4\x94\xe2\xb4\x95\xe2\xb4 \x96\xe2\xb4\x97\xe2\xb4\x98\xe2\xb4\x99\xe2\xb4\x9a\xe2\xb4\x9b\xe2\xb4\x9c\xe2\xb4\x9d\xe2\xb4\x9e \xe2\xb4\x9f\xe2\xb4\xa0\xe2\xb4\xa1\xe2\xb4\xa2\xe2\xb4\xa3\xe2\xb4\xa4\xe2\xb4\xa5\xe2\xb4\xa7\xe2 \xb4\xad\xea\x99\x80\xea\x99\x82\xea\x99\x84\xea\x99\x86\xea\x99\x88\xea\x99\x8a\xea\x99\x8c\xea\x99 \x8e\xea\x99\x90\xea\x99\x92\xea\x99\x94\xea\x99\x96\xea\x99\x98\xea\x99\x9a\xea\x99\x9c\xea\x99\x9e \xea\x99\xa0\xea\x99\xa2\xea\x99\xa4\xea\x99\xa6\xea\x99\xa8\xea\x99\xaa\xea\x99\xac\xea\x9a\x80\xea \x9a\x82\xea\x9a\x84\xea\x9a\x86\xea\x9a\x88\xea\x9a\x8a\xea\x9a\x8c\xea\x9a\x8e\xea\x9a\x90\xea\x9a \x92\xea\x9a\x94\xea\x9a\x96\xea\x9a\x98\xea\x9a\x9a\xea\x9c\xa2\xea\x9c\xa4\xea\x9c\xa6\xea\x9c\xa8 \xea\x9c\xaa\xea\x9c\xac\xea\x9c\xae\xea\x9c\xb2\xea\x9c\xb4\xea\x9c\xb6\xea\x9c\xb8\xea\x9c\xba\xea \x9c\xbc\xea\x9c\xbe\xea\x9d\x80\xea\x9d\x82\xea\x9d\x84\xea\x9d\x86\xea\x9d\x88\xea\x9d\x8a\xea\x9d \x8c\xea\x9d\x8e\xea\x9d\x90\xea\x9d\x92\xea\x9d\x94\xea\x9d\x96\xea\x9d\x98\xea\x9d\x9a\xea\x9d\x9c \xea\x9d\x9e\xea\x9d\xa0\xea\x9d\xa2\xea\x9d\xa4\xea\x9d\xa6\xea\x9d\xa8\xea\x9d\xaa\xea\x9d\xac\xea \x9d\xae\xea\x9d\xb9\xea\x9d\xbb\xea\x9d\xbd\xea\x9d\xbe\xea\x9e\x80\xea\x9e\x82\xea\x9e\x84\xea\x9e \x86\xea\x9e\x8b\xea\x9e\x8d\xea\x9e\x90\xea\x9e\x92\xea\x9e\x96\xea\x9e\x98\xea\x9e\x9a\xea\x9e\x9c \xea\x9e\x9e\xea\x9e\xa0\xea\x9e\xa2\xea\x9e\xa4\xea\x9e\xa6\xea\x9e\xa8\xea\x9e\xaa\xea\x9e\xab\xea \x9e\xac\xea\x9e\xad\xea\x9e\xae\xea\x9e\xb0\xea\x9e\xb1\xea\x9e\xb2\xea\x9e\xb3\xea\x9e\xb4\xea\x9e \xb6\xea\x9e\xb8\xea\x9e\xba\xea\x9e\xbc\xea\x9e\xbe\xea\x9f\x82\xea\x9f\x84\xea\x9f\x85\xea\x9f\x86 \xea\x9f\x87\xea\x9f\x89\xea\x9f\xb5\xef\xbc\xa1\xef\xbc\xa2\xef\xbc\xa3\xef\xbc\xa4\xef\xbc\xa5\xef \xbc\xa6\xef\xbc\xa7\xef\xbc\xa8\xef\xbc\xa9\xef\xbc\xaa\xef\xbc\xab\xef\xbc\xac\xef\xbc\xad\xef\xbc \xae\xef\xbc\xaf\xef\xbc\xb0\xef\xbc\xb1\xef\xbc\xb2\xef\xbc\xb3\xef\xbc\xb4\xef\xbc\xb5\xef\xbc\xb6 \xef\xbc\xb7\xef\xbc\xb8\xef\xbc\xb9\xef\xbc\xba\x9c\xe2\xb3\x9e\xe2\xb3\xa0\xe2\xb3\xa2\xe2\xb3\xab\xe2\xb3\xad\xe2\xb3\xb2\xe2\xb4\x80\xe2\xb4\x81 \xe2\xb4\x82\xe2\xb4\x83\xe2\xb4\x84\xe2\xb4\x85\xe2\xb4\x86\xe2\xb4\x87\xe2\xb4\x88\xe2\xb4\x89\xe2 \xb4\x8a\xe2\xb4\x8b\xe2\xb4\x8c\xe2\xb4\x8d\xe2\xb4\x8e\xe2\xb4\x8f\xe2\xb4\x90\xe2\xb4\x91\xe2\xb4 \x92\xe2\xb4\x93\xe2\xb4\x94\xe2\xb4\x95\xe2\xb4\x96\xe2\xb4\x97\xe2\xb4\x98\xe2\xb4\x99\xe2\xb4\x9a \xe2\xb4\x9b\xe2\xb4\x9c\xe2\xb4\x9d\xe2\xb4\x9e\xe2\xb4\x9f\xe2\xb4\xa0\xe2\xb4\xa1\xe2\xb4\xa2\xe2 \xb4\xa3\xe2\xb4\xa4\xe2\xb4\xa5\xe2\xb4\xa7\xe2\xb4\xad\xea\x99\x80\xea\x99\x82\xea\x99\x84\xea\x99 \x86\xea\x99\x88\xea\x99\x8a\xea\x99\x8c\xea\x99\x8e\xea\x99\x90\xea\x99\x92\xea\x99\x94\xea\x99\x96 \xea\x99\x98\xea\x99\x9a\xea\x99\x9c\xea\x99\x9e\xea\x99\xa0\xea\x99\xa2\xea\x99\xa4\xea\x99\xa6\xea \x99\xa8\xea\x99\xaa\xea\x99\xac\xea\x9a\x80\xea\x9a\x82\xea\x9a\x84\xea\x9a\x86\xea\x9a\x88\xea\x9a \x8a\xea\x9a\x8c\xea\x9a\x8e\xea\x9a\x90\xea\x9a\x92\xea\x9a\x94\xea\x9a\x96\xea\x9a\x98\xea\x9a\x9a \xea\x9c\xa2\xea\x9c\xa4\xea\x9c\xa6\xea\x9c\xa8\xea\x9c\xaa\xea\x9c\xac\xea\x9c\xae\xea\x9c\xb2\xea \x9c\xb4\xea\x9c\xb6\xea\x9c\xb8\xea\x9c\xba\xea\x9c\xbc\xea\x9c\xbe\xea\x9d\x80\xea\x9d\x82\xea\x9d \x84\xea\x9d\x86\xea\x9d\x88\xea\x9d\x8a\xea\x9d\x8c\xea\x9d\x8e\xea\x9d\x90\xea\x9d\x92\xea\x9d\x94 \xea\x9d\x96\xea\x9d\x98\xea\x9d\x9a\xea\x9d\x9c\xea\x9d\x9e\xea\x9d\xa0\xea\x9d\xa2\xea\x9d\xa4\xea \x9d\xa6\xea\x9d\xa8\xea\x9d\xaa\xea\x9d\xac\xea\x9d\xae\xea\x9d\xb9\xea\x9d\xbb\xea\x9d\xbd\xea\x9d \xbe\xea\x9e\x80\xea\x9e\x82\xea\x9e\x84\xea\x9e\x86\xea\x9e\x8b\xea\x9e\x8d\xea\x9e\x90\xea\x9e\x92 \xea\x9e\x96\xea\x9e\x98\xea\x9e\x9a\xea\x9e\x9c\xea\x9e\x9e\xea\x9e\xa0\xea\x9e\xa2\xea\x9e\xa4\xea \x9e\xa6\xea\x9e\xa8\xea\x9e\xaa\xea\x9e\xab\xea\x9e\xac\xea\x9e\xad\xea\x9e\xae\xea\x9e\xb0\xea\x9e \xb1\xea\x9e\xb2\xea\x9e\xb3\xea\x9e\xb4\xea\x9e\xb6\xea\x9e\xb8\xea\x9e\xba\xea\x9e\xbc\xea\x9e\xbe \xea\x9f\x82\xea\x9f\x84\xea\x9f\x85\xea\x9f\x86\xea\x9f\x87\xea\x9f\x89\xea\x9f\xb5\xef\xbc\xa1\xef \xbc\xa2\xef\xbc\xa3\xef\xbc\xa4\xef\xbc\xa5\xef\xbc\xa6\xef\xbc\xa7\xef\xbc\xa8\xef\xbc\xa9\xef\xbc \xaa\xef\xbc\xab\xef\xbc\xac\xef\xbc\xad\xef\xbc\xae\xef\xbc\xaf\xef\xbc\xb0\xef\xbc\xb1\xef\xbc\xb2 \xef\xbc\x

  • 我不是 C 库标准委员会的成员(几乎所有编程语言库都是基于该标准委员会的)。但我认为这些列表upr和lwr UTF8转换应该包含在C库函数中,因为将来UTF8的广泛使用。但这只是我的意见,希望他们考虑将其包括在内。 (2认同)

Jan*_*röm 6

搜索工具中肯定需要这些不区分大小写的功能。

\n

嗯,我有与上面描述的相同的需求,并且UTF8在大多数方面都相当流畅,但是大写和小写的情况并不是那么好。看起来完成后它就从待办事项列表中消失了?因为在过去,它一直是此类情况下待办事项列表上的主要主题之一。在 IBM 发布之前,我已经在 1984 年修补了 IBM 键盘驱动程序,但有可用的副本。在 IBM 想要在欧洲发货之前还修补了 Displaywrite 1 和 3(PC-DOS 字处理器)。在 IBM 3270 大型机终端系统中完成了大量的 PC-DOS (CP850) 和 CP1252 (Windows) 与国家 EBCDIC 代码页之间的交互。他们的待办事项列表中都有这个区分大小写的主题。在所有国家 ASCII 版本和 CP1252 Windows 表中,在 0x40-0x5F 和 0x60-0x7F 之间进行了转换,以在小写和大写之间翻转(但 PCDOS CP850 除外),即 0x20。

\n

该怎么办?

\n

tolower() 和 toupper() 不适用于 US-ASCII 之外的 UTF8 多字符串。他们只使用一个字节。但字符串解决方案是可行的,并且对于其他所有问题都有解决方案。

\n

西欧人是幸运的

\n

那么 UTF8 将 CP1252 (Windows 8bit/Latin1) 作为第一个附加表,\nLatin-1 补充(Unicode 块),按原样。这意味着可以像常规 US ASCII 一样移动字母 (C3XX)。下面的代码示例。

\n

希腊人、俄罗斯人、冰岛人和东欧人就没那么幸运了

\n

对于冰岛人来说,\xc4\x90/\xc4\x91 - 带笔划的 D(与单词 the 的 th 音相同)只是从 CP1252 中打出的。

\n

希腊人、俄罗斯人和东欧人可以使用 ISO8 字符集(CP1253、CP1251 和 CP1257)(因为直接使用拉丁语 CP1252)。那么仅仅转移也会起作用。但相反,有人只是相当随机地填写了表格(就像在 PC-DOC 8 位 ASCII 中一样)。

\n

只有一种可行的解决方案,与 PC_DOS ASCII 相同,即制作转换表。我会在下一个圣诞节做这件事(当我非常需要它的时候),但我会提示如果其他人很着急的话该怎么做。

\n

如何为希腊人、俄罗斯人、冰岛人和东欧人提供解决方案

\n

在编程代码中为东欧、希腊语和西里尔语制作与 UTF8 表的不同第一个字节相关的不同表。用 UTF8 第二个字节位置中字母的第二个字节填充表,并将大写字母与小写字母的匹配第二个字节交换,并以相反的方式创建另一个字母。

\n

然后确定与每个表相关的第一个字节。这样,编程代码就可以选择正确的表并读取正确的位置并获取所需的大写或小写字符。然后修改下面的字母大小写函数(我为 Latin1 编写的函数),对于某些必须使用表的第一个 UTF8 字符,使用移位 0x20 的表。它将运行顺利,新计算机的内存和电源没有问题。

\n

UTF8字母大小写相关函数Latin1示例

\n

我相信这是有效的,很快就尝试过。它仅适用于 UTF8 的 Latin-1 和 USACII 部分。

\n
    unsigned char *StrToLwrUft8Latin1(unsigned char *pString)\n{\n    char cExtChar = 0;\n    if (pString && *pString) {\n        unsigned char *p = pString;\n        while (*p) {\n            if (((cExtChar && ((*p >= 0xc0) && (*p <= 0xde) && (*p != 0xd7)))\n                || ((!cExtChar) && ((*p >= 0x41) && (*p <= 0x5a))))\n                && ((((*p & 0x7f) + cExtChar) >= 0x40)\n                    && (((*p & 0x7f) + cExtChar) <= 0x5f)))\n                *p += 0x20;\n            if (cExtChar)\n                cExtChar = 0;\n            else if (*p == 0xc3)\n                cExtChar = 0x40;\n            p++;\n        }\n    }\n    return pString;\n}\nunsigned char *StrToUprUft8Latin1(unsigned char *pString)\n{\n    char cExtChar = 0;\n    if (pString && *pString) {\n        unsigned char *p = pString;\n        while (*p) {\n            if (((cExtChar && ((*p >= 0xe0) && (*p <= 0xfe) && (*p != 0xf7)))\n                || ((!cExtChar) && ((*p >= 0x61) && (*p <= 0x7a))))\n                && ((((*p & 0x7f) + cExtChar) >= 0x60)\n                    && (((*p & 0x7f) + cExtChar) <= 0x7f)))\n                *p -= 0x20;\n            if (cExtChar)\n                cExtChar = 0;\n            else if (*p == 0xc3)\n                cExtChar = 0x40;\n            p++;\n        }\n    }\n    return pString;\n}\nint StrnCiCmpLatin1(const char *s1, const char *s2, size_t ztCount)\n{\n    unsigned char cExtChar = 0;\n    if (s1 && *s1 && s2 && *s2) {\n        for (; ztCount--; s1++, s2++) {\n            int iDiff = tolower((unsigned char)(*s1 & 0x7f)\n                + cExtChar) - tolower((unsigned char)(*s2 & 0x7f) + cExtChar);\n            if (iDiff != 0 || !*s1 || !*s2)\n                return iDiff;\n            if (cExtChar)\n                cExtChar = 0;\n            else if (((unsigned char )*s2) == ((unsigned char)0xc3))\n                cExtChar = 0x40;\n        }\n    }\n    return 0;\n}\nint StrCiCmpLatin1(const char *s1, const char *s2)\n{\n    return StrnCiCmpLatin1(s1, s2, (size_t)(-1));\n}\nchar *StrCiStrLatin1(const char *s1, const char *s2)\n{\n    if (s1 && *s1 && s2 && *s2) {\n        char *p = (char *)s1;\n        size_t len = strlen(s2);\n        while (*p) {\n            if (StrnCiCmpLatin1(p, s2, len) == 0)\n                return p;\n            p++;\n        }\n    }\n    return (0);\n}\n
Run Code Online (Sandbox Code Playgroud)\n