我正在写一个程序来计算一个单词的“和”,基于字母(即“”=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编写的,程序中的任何字符都将是程序的编码,因此它可以工作吗?
如果不清楚的话,我不知道我在说什么,所以一些关于编码工作原理的一般信息也会很好。
1条答案
按热度按时间jckbn6z71#
java字符串总是用utf-16编码;根据需要转换输入和输出。
然而,这可以写得更好:
作为
原因:
检查预期范围更为谨慎
你不需要知道小写字母和大写字母之间的距离是32。
另外,“char”在java中是一个关键字。
当然,这只适用于无重音的美国/英国字母表中的字母。
不过,我建议您使用(正如您自己所说的)'tolowercase()',因为这就是它的用途-以减轻您的细节。