2

MSIのBinaryテーブルから文字列を抽出しようとすると、奇妙な動作が見つかりました。

を含むファイルがあります。Hello world取得するデータはです???Hello world。(文学的疑問符。)

これは意図したとおりですか?
最初は常に正確に3文字になりますか?


サンプルコード:

[CustomAction]
public static ActionResult CustomAction2(Session session)
{
    View v = session.Database.OpenView("SELECT `Name`,`Data` FROM `Binary`");
    v.Execute();

    Record r = v.Fetch();
    int datalen = r.GetDataSize("Data");
    System.IO.Stream strm = r.GetStream("Data");
    byte[] rawData = new byte[datalen];
    int res = strm.Read(rawData, 0, datalen);
    strm.Close();

    String s = System.Text.Encoding.ASCII.GetString(rawData);
    // s == "???Hello World"

    return ActionResult.Success;
}
4

2 に答える 2

1

大げさな推測ですが、メモ帳を使用してファイルを作成した場合、それは単にバイト順マークではありませんか?

于 2010-05-17T12:01:46.860 に答える
0

試す

String s = System.Text.Encoding.UTF8.GetString(rawData);
if (s.Length > 0 && s[0] == '\uFEFF')
{
    s = s.Substring(1);
}

それ以外のString s = System.Text.Encoding.ASCII.GetString(rawData);

于 2013-06-14T06:39:06.727 に答える