2

ペルシア語を含むテキスト ファイルがあり、ANSI エンコーディングを使用して保存されています。テキスト ファイルからペルシア語を読み取ろうとすると、「?」のような文字が表示されます。この問題を解決するために、ファイルのエンコーディングを UTF8 に変更し、テキスト ファイルを書き直しました。ファイルのエンコーディングを変更する方法は次のとおりです。

    public void Convert2UTF8(string filePath)
    {
        //first, read the text file with "ANSI" endocing
        StreamReader fileStream = new StreamReader(filePath, Encoding.Default);
        string fileContent = fileStream.ReadToEnd();
        fileStream.Close();
        //Now change the file encoding and replace it with the UTF8
        StreamWriter utf8Writer = new StreamWriter(filePath.Replace(".txt", ".txt"), false, Encoding.UTF8);
        utf8Writer.Write(fileContent);
        utf8Writer.Close();
    }

これで最初の問題は解決しました。ただし、ここには別の問題があります。SQL サーバー データベース テーブルからペルシア語を検索するたびに、データベース テーブルにレコード存在するにもかかわらず結果が null になります。

表にあるペルシア語の単語を見つけるための解決策は何ですか? 私が現在使用しているコードは、次のようなものです。

SELECT * FROM [dbo].[WordDirectory] 
WHERE Word = N'کلمه'

Wordは、ペルシア語の単語が保存されるフィールドです。フィールドのタイプは ですNVARCHAR。SQL サーバーのバージョンは 2012 です。照合順序を変更する必要がありますか?

4

2 に答える 2

3

おそらく、検索中にペルシャ語とアラビア語の '이' と 'क' に問題があると思われます。これらの文字は同じように見えますが、異なる Unicode 番号を持っています:

select NCHAR(1740),  -- Persian ى
       NCHAR(1610),  -- Arabic ي
       NCHAR(1705), -- Persian ك
       NCHAR(1603) -- Arabic ك

詳細: http://www.dotnettips.info/post/90

于 2014-02-22T21:32:34.920 に答える