我对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
那么有什么专家可以帮助我吗?
答案 0 :(得分:0)
我真的不明白我要怎么处理。
显示为A
的原始源字符无疑是Unicode字符U + 0410“西里尔大写字母A”,而不是U + 0041“拉丁文大写字母A”。后者是您使用美国或西欧键盘上的“ A”键移动时产生的。您可以通过打印出有关字符的数值来验证这一点。
当我尝试这些代码时,我得到了这个[垃圾]
这是一个完全不同的问题:您正在打印数组的字符串值(通过q.toString()
获得),这与包含数组字符(String.valueOf(q)
的字符串)不同
只要您在保存文件时使用了编译器期望的字符编码(可能是UTF-8),并且该编码支持所需的字符(UTF-8支持所有Unicode字符),则您应该能够将它们按字面意义写到您的源代码中,然后成功打印出来。