0

私はSQL Server 2008のファイルストリームオプションを初めて使用しますが、このオプションを開く方法と、ファイルを保存できるテーブルを作成する方法をすでに理解しています。私のテーブルに含まれているとしましょう:id、name、filecontent

このテーブルに html ファイル (ヘブライ文字/テキストを含む) を挿入しようとしました。Visual Studio 2008 を使用して、asp.net (c#) で書いています。

しかし内容を読み返そうとすると、ヘブライ文字が「?」になってしまいます。

私が取った行動は:

1.私はこのようにファイルを読みます:

        // open the stream reader
        System.IO.StreamReader aFile = new StreamReader(FileName,   System.Text.UTF8Encoding.UTF8);

        // reads the file to the end
        stream = aFile.ReadToEnd();

        // closes the file
        aFile.Close();

ストリームを返します。// ストリームを返します

  1. 「ストリーム」をバイナリデータとして filecontent 列に挿入しました。

  2. この列に対して「選択」を試みたところ、(文字列に変換した後) データは返されましたが、ヘブライ文字は「?」になります。

この問題を解決するにはどうすればよいですか? 何に注意すればよいですか?

ありがとう、ガディム

4

2 に答える 2

2

この問題を解決することに成功しました。私は間違っていました、問題はSQLサーバーではありませんでしたが、私のコードでは、バイナリから文字列に、またはその逆に転送するときです。

文字列 (ヘブライ文字を含む) をバイナリに変換する必要がある場合は、次の行を記述できます。

System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
//HtmlFile = the file i read as string and now i want to convert it to bytes array.
byte[] ConvertTextToBytesArray = encoding.GetBytes(HtmlFile);

およびその逆 :

    string str;
    System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
    // result = the binary data i want to convert it back to string
    str = enc.GetString(result);

何らかの理由で System.Text.UTF8Encoding の代わりに System.Text.ASCIIEncoding を使用しました。

メフありがとう!

于 2010-04-28T16:20:04.697 に答える
1

ヘブライ語では UTF8 エンコーディングが機能しないように見えますか?

古い議論については、こちらを参照してください: http://social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/73c81574-b434-461f-b766-fb9d0e4353c7

sr = new StreamReader(fs, Encoding.GetEncoding("windows-1255"));

または、ファイルが UTF8 でエンコードされていますか?

また、BLOB が 1MB 未満の場合、実際には FILESTREAM のパフォーマンスが低下する可能性があり、HTML ファイルはその説明に適合すると予想されます。代わりに NVARCHAR(MAX) を検討しましたか。

http://blogs.msdn.com/manisblog/archive/2007/10/21/filestream-data-type-sql-server-2008.aspx

于 2010-04-28T13:06:55.153 に答える