我有一个字符文本文件,我必须将其解码为原始字符序列。
但是我不确定我要解码的语言是什么,我永远不会知道(但我知道它不是英语)
所以我使用频率分析来映射encoded.txt中最常用的字符 - >特定语言中最常见的字符。最不常见的角色也是如此。
在设置了所有映射之后,我通过转换函数运行encoded.txt。但它然后将转换的字节打印为ascii字符。
这显然不是我想要的(比如希腊字符)。是UTF-8我需要用作字节表示吗?如果是这样,我如何为个别整数执行此操作 - >字符,不是数组,不是字符串?
使用频率分析我已将文件解码为希腊文,但显然它是以某种日文格式打印的。我如何表示希腊字母?这同样适用于其他语言吗?
答案 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);