用java读取乌尔都语文件
我试图读取一个包含乌尔都语数据的文件。当我在Notepad++中查看文件时,它的数据是乌尔都语。但当我在eclipse中查看它时,它显示了某种类型的编码(可能是它得到了一些默认值) 原始乌尔都语数据(记事本++): 在eclipse中:用java读取乌尔都语文件,java,eclipse,urdu,Java,Eclipse,Urdu,我试图读取一个包含乌尔都语数据的文件。当我在Notepad++中查看文件时,它的数据是乌尔都语。但当我在eclipse中查看它时,它显示了某种类型的编码(可能是它得到了一些默认值) 原始乌尔都语数据(记事本++): 在eclipse中: "10","کراچی میں ٹماٹر Ú©ÛŒ قیمت میں کمی،25روپے Ù�ÛŒ کلو Û�وگیا","Entertainment" 现在这很奇怪,默认情况下会发生
"10","کراچی میں ٹماٹر کی قیمت میں کمی،25روپے �ی کلو �وگیا","Entertainment"
现在这很奇怪,默认情况下会发生一些编码。是否有任何方法可以获取原始形式的数据,这样当我对其进行处理并将其写入文件时,我希望处理后的数据是原始乌尔都语形式的,而不是任何编码
private void readDataFromFile(String fileName)
{
Path path = Paths.get(fileName);
Charset charset = StandardCharsets.UTF_8;
try (BufferedReader br = Files.newBufferedReader(path, charset)) {
String line;
while( (line = br.readLine()) != null )
{
System.out.println(line);
}
}
catch(Exception ex) {
ex.printStackTrace();
}
}
这是代码
public class DataProcessing {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
DataProcessing dataProcessingObj = new DataProcessing();
dataProcessingObj.readDataFromFile("small_dataset.txt");
}
private void readDataFromFile(String fileName)
{
BufferedReader br = null;
try{
br = new BufferedReader(new FileReader(fileName));
String line = "";
while( (line = br.readLine()) != null )
{
System.out.println(line);
}
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
如果您能帮助我,我将非常感谢您。不要使用FileReader/FileWriter,因为它们是使用默认平台编码的旧实用程序类。您想要指定编码,或者UTF-8或者Windows-1256。(记事本++将显示正确的编码。) 或者在java 8中:
private void readDataFromFile(String fileName) throws IOException
{
Path path = Paths.get(fileName);
Charset charset = Charset.forName("Window-1256");
Files.lines(path, charset).forEach(System.out::println);
}
文件以什么字符编码保存?您是如何读取文件内容并在应用程序中显示它的?代码有问题。@Jesper我如何知道我的文件保存在哪个字符编码中?您的代码正在使用系统的默认字符编码读取文本文件。如果文件实际上是用不同的字符编码方式编码的,则会得到错误的结果。使用
新的InputStreamReader(新的FileInputStream(文件名),“UTF-8”)
(如果文件是用UTF-8编码的;如果是其他文件,请使用适当的字符集名称)。您可以使用系统.out.println()将输出打印到控制台。您确定控制台使用的字体可以显示乌尔都语字符吗?如果字体没有这些字符,你会得到问号。我无法得到我的原始乌尔都语文本。当我打印它时,它会显示以下结果。“10”、“25”、“娱乐”系统。out则无法显示编码。改为使用UTF-8写入文件
private void readDataFromFile(String fileName) throws IOException
{
Path path = Paths.get(fileName);
Charset charset = Charset.forName("Window-1256");
Files.lines(path, charset).forEach(System.out::println);
}