使用java将Unicode(UTF-8)文本写入文件时遇到问题。 我想用其他语言(波斯语)编写一些文本来编写java文件,但是在运行我的应用程序后我收到了意外的结果。
File file = new File(outputFileName);
FileOutputStream f = new FileOutputStream(outputFileName);
String encoding = "UTF-8";
OutputStreamWriter osw = new OutputStreamWriter(f,encoding);
BufferedWriter bw = new BufferedWriter(osw);
StringBuilder row = new StringBuilder();
row.append("Some text in English language");
// in below code it should be 4 space before علی
row.append(" علی");
// in below code it should be 6 space before علی یاری
row.append(" علی یاری");
bw.write(row.toString());
bw.flush(); bw.close();
我该如何解决这个问题?
答案 0 :(得分:-1)
输出是根据Unicode bidirectional algorithm预期的结果。整个波斯语文本从右向左呈现。如果您希望从左到右排列单个单词,则需要在两个波斯语单词之间插入一个强烈从左到右的字符。对此有一个特殊的特征:LEFT TO RIGHT MARK(U + 200e)。对代码的这种修改应该产生正确的输出:
row.append("Some text in English language");
row.append(" علی");
row.append('\u200e');
row.append(" علی یاری");