我对char []方法有一些问题。我正在Java的一些代码块。我需要在程序中使用土耳其角色。但最初是用俄语编码的。
这里原始代码
TableRow row = null;
int w = 0;
for (char q = 'A'; q <= 'Я'; q++)
{
if (w++ % columns == 0) {
row = new TableRow(AlphabetActivity.this);
addView(row);
}
final Button button = new Button(AlphabetActivity.this);
button.setBackgroundResource(R.drawable.selector_dashboard_button);
button.setText("" + q);
button.setTag(q);
使用此代码,我得到了此结果https://i.stack.imgur.com/aquco.jpg
当我像这样更改此部分时
for (char q = 'a'; q <= 'z'; q++)
我得到了这个结果https://i.stack.imgur.com/dzczn.jpg
当我这样更改时(这次我用keybord(手动(写" a",我的意思不是原始的" a"(
for (char q = 'A'; q <= 'Я'; q++)
我有这个https://i.stack.imgur.com/9a6ni.jpg
我真的不明白我要处理什么。如果我使用此(第一代码(
for (char q = 'a'; q <= 'z'; q++)
并删除此
int w = 0;
if (w++ % columns == 0)
我有所有的拉丁字母https://imgur.com/7ndp0ku
但我需要土耳其角色。
我尝试了一些在stackoverflow上看到的解决方案
char[] q ={ 'a', 'b', 'ç', 'd', 'e' };
char[] q = "abcdefghijklmnopqrstuvwxyz".toCharArray();
等等,但是当我尝试这些代码时,我会得到这个https://i.stack.imgur.com/w4jei.jpg
所以有没有专家可以帮助我?
我真的不明白我要处理的是什么。
作为A
显示给您的原始源字符无疑是Unicode字符u 0410,"西里尔大写字母A",而不是U 0041,"拉丁大写字母A"。后者是您在美国或西欧键盘上使用的" A"键的生产的。您可以通过打印出相关字符的数值来验证这一点。
当我尝试这些代码时,我得到了[垃圾]
这是一个完全不同的问题:您正在打印数组的字符串值(通过q.toString()
获得(,它与包含数组字符的字符串不同(String.valueOf(q)
(。
只要您使用保存文件时编译器预期的字符编码(可能是UTF-8(,并且编码支持您想要的字符(UTF-8支持所有Unicode字符(,您应该能够从字面上将它们写入您的来源,然后成功打印出来。