将Integer转换为适当的字符表示Java

时间:2015-03-10 11:32:26

标签: java string utf-8 ascii decode

我有一个字符文本文件,我必须将其解码为原始字符序列。

但是我不确定我要解码的语言是什么,我永远不会知道(但我知道它不是英语)

所以我使用频率分析来映射encoded.txt中最常用的字符 - >特定语言中最常见的字符。最不常见的角色也是如此。

在设置了所有映射之后,我通过转换函数运行encoded.txt。但它然后将转换的字节打印为ascii字符。

这显然不是我想要的(比如希腊字符)。是UTF-8我需要用作字节表示吗?如果是这样,我如何为个别整数执行此操作 - >字符,不是数组,不是字符串?

使用频率分析我已将文件解码为希腊文,但显然它是以某种日文格式打印的。我如何表示希腊字母?这同样适用于其他语言吗?

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

String myCharacters = "my words";

// get bytes
byte[] bytes = myCharacters.getBytes();

// show string in UTF-8
new String(bytes, Charset.forName("UTF-8"));

// show string in ASCII
new String(bytes, Charset.forName("US-ASCII"));

或者,在这种情况下......

byte myByte = (byte)125;
new String(new byte[]{myByte}, Charset.forName("UTF-8"));

最后,要处理0-255范围之外的多字节字符,请使用:

for(char c:myCharacters){
  byte[] bytes = Character.toString(c).getBytes("UTF-8");
  // bytes is a multi-byte character
}

逆转

char ch2 = Character.forDigit(i2, 16);