Java

时间:2019-05-24 23:51:58

标签: 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://imgur.com/fmz15Rv

当我像这样改变这部分时

for (char q = 'a'; q <= 'z'; q++)

我得到这个结果 https://imgur.com/VB6y3vn

当我这样更改时(这次我用键盘输入“ A”(手动)是指不是原始的“ A”)

for (char q = 'A'; q <= 'Я'; q++)

我有这个 https://imgur.com/hltDFoj

我真的不明白我在处理什么。 如果我使用这个(第一个代码)

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://imgur.com/Dcu8rs5

那么有什么专家可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

  

我真的不明白我要怎么处理。

显示为A的原始源字符无疑是Unicode字符U + 0410“西里尔大写字母A”,而不是U + 0041“拉丁文大写字母A”。后者是您使用美国或西欧键盘上的“ A”键移动时产生的。您可以通过打印出有关字符的数值来验证这一点。

  

当我尝试这些代码时,我得到了这个[垃圾]

这是一个完全不同的问题:您正在打印数组的字符串值(通过q.toString()获得),这与包含数组字符(String.valueOf(q)的字符串)不同

只要您在保存文件时使用了编译器期望的字符编码(可能是UTF-8),并且该编码支持所需的字符(UTF-8支持所有Unicode字符),则您应该能够将它们按字面意义写到您的源代码中,然后成功打印出来。