Java中使用Char []方法的特殊字符



我对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字符(,您应该能够从字面上将它们写入您的来源,然后成功打印出来。

相关内容

最新更新