4

ウルドゥー語データを含むファイルを読み込もうとしています。ファイルを Notepad++ で表示すると、ウルドゥー語のデータが含まれています。しかし、Eclipseで表示すると、何らかのタイプのエンコーディングが表示されます(デフォルトが設定されている可能性があります)。

元のウルドゥー語データ (メモ帳++):

"10","کراچی میں ٹماٹر کی قیمت میں کمی،25روپے فی کلو ہوگیا","Entertainment"

日食で:

"10","کراچی میں ٹماٹر کی قیمت میں کمی،25روپے �ی کلو �وگیا","Entertainment"

現在、これはデフォルトでいくつかのエンコードが行われているのが奇妙です。データを元の形式で取得して、何らかの処理を行ってファイルに書き込むときに、エンコードではなく元のウルドゥー語形式で処理されたデータが必要になる方法はありますか。

これがコードです。

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();
        }
    }
}

あなたが私を助けることができれば、私はあなたに感謝します.

4

1 に答える 1

1

デフォルトのプラットフォーム エンコーディングを使用する古いユーティリティ クラスであるため、FileReader/FileWriter は使用しないでください。UTF-8またはWindows-1256のエンコーディングを指定します 。(Notepad++ は正しいエンコーディングを表示します。)

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();
    }
}

または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);
}
于 2016-10-27T19:10:33.123 に答える