关于字符编码工作原理的说明

ttisahbt  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(419)

我正在写一个程序来计算一个单词的“和”,基于字母(即“”=a+b+c=1+2+3=6)。我用的是 total += (int) char - 'a' + 1 (java语言)。这个程序是不区分大小写的('a'='a'),所以如果需要的话,首先我想把字符转换成小写。我已经写信了

if (char < 'a') {char += 32;}

这在utf-16和ascii中是正确的,但不是utf-8。
我的问题是,如果我要发布这段代码,那么编码在编译之后是如何工作的?如果用户使用utf-8,程序会失败吗(所以最好使用utf-8) Character.toLowerCase() ),或者由于程序是用java编写的,程序中的任何字符都将是程序的编码,因此它可以工作吗?
如果不清楚的话,我不知道我在说什么,所以一些关于编码工作原理的一般信息也会很好。

jckbn6z7

jckbn6z71#

java字符串总是用utf-16编码;根据需要转换输入和输出。
然而,这可以写得更好:

if (char < 'a') {char += 32;}

作为

if (ch >= 'A' && ch <= 'Z')
    ch += ('a' - 'A');

原因:
检查预期范围更为谨慎
你不需要知道小写字母和大写字母之间的距离是32。
另外,“char”在java中是一个关键字。
当然,这只适用于无重音的美国/英国字母表中的字母。
不过,我建议您使用(正如您自己所说的)'tolowercase()',因为这就是它的用途-以减轻您的细节。

相关问题