哪个C功能可以将À,É转换为降低à,è?
我尝试了tolower()和towlower(),但两者都不起作用。
答案 0 :(得分:2)
您可以使用towlower功能:
/* towlower example */
#include <stdio.h>
#include <wctype.h>
#include <wchar.h>
#include <stddef.h>
#include <locale.h>
int main () {
setlocale(LC_CTYPE, "");
int i=0;
wchar_t str[] = L"À TÉst String.\n";
wchar_t c;
while (str[i]) {
c = str[i];
putwchar (towlower(c));
i++;
}
return 0;
}
输出是:
à tést string.
<强> “”强> 空名称表示根据环境变量选择区域设置。
答案 1 :(得分:1)
您在此处遇到的实际问题*(尽管有上述&#34;答案&#34;),您有一个 Unicode 字符串。 *(或者,至少,某种DBCS =&#34;双字节字符集。&#34;)
&#34; C&#34; 语言的标准功能是在更早,更简单的时间设计的#34;&# 34;其中唯一需要考虑的语言表示是ASCII
,其中指定了#34;需要表示的每个字符&#34;成为一组127个可能的值。这张照片中的无处是任何&#34;变音符号&#34;比如这些。在那些简单的时间里,&#34; 1字节= 1个字符。&#34;
为了代表&#34;真正的人(!) - 语言字符,&#34;有必要采用一种更加灵活的编码格式,可以将1到4个字节的任何内容分配给单个&#34;字符。&#34; (并且,请注意,关于&#34;以及如何做到这一点的共识#34;并非在一夜之间发生!)无论如何,&#34;原创&#34;您现在使用的库例程不是&#34; Unicode识别的。&#34; (它们从来没有被设计过,现在它们不能被改装......)相反,必须使用替代功能。
这是一个很好的外部网页,可以很好地总结使用C和C ++时需要考虑的各种问题:
http://www.cprogramming.com/tutorial/unicode.html
--- 编辑:
当我说,&#34;关于如何做到这一点的共识并非一蹴而就,&#34;我的意见旨在产生潜在的深远影响(!)。 &#34;为什么有必要,即使在今天,说"encoding=UTF-8"
?这就是原因。 &#34;对如何解释多国字节序列&#39;&#34; 的单一解释从未发展过,而且&#34; C&# 34;语言,特别是,&#34;把它放在下巴。&#34;在今天的C&#34; C&#34;中有超过一套完整的图书馆功能。您可能需要使用的运行时,以便正确处理您的数据。