【问题标题】:Write string to a stream using utf16 encoding使用 utf16 编码将字符串写入流
【发布时间】:2012-03-25 11:39:51
【问题描述】:

我的代码:

        public static void DoStrumienia (string pString, Stream pStream)
        {
              if (pStream == null) throw new ArgumentNullException ();

              BinaryWriter bw = new BinaryWriter (pStream);

              int rozmiar = pString.Length;
              bw.Write (rozmiar);

              for (int i = 0; i < rozmiar; i++)
              {
                    bw.Write (pString[i]);
              }

              bw.Flush ();
        }

它将字符串写入流,但它使用 UTF8 编码写入。 如何使用 UTF16?

【问题讨论】:

  • 你为什么一次写一个字符?
  • 因为这是我目前所知道的唯一方法。

标签: c# string utf-8 stream


【解决方案1】:
System.Text.Encoding encoding = System.Text.Encoding.Unicode; 
BinaryWriter bw = new BinaryWriter (pStream, encoding);

See here.

【讨论】:

  • 为什么我应该使用大端编码?这对我来说没有意义。我刚刚修复了一行: bw.Write (pString[i]);到 bw.Write ((ushort)pString[i]);也许它会起作用。
  • x86,所以我使用 LE。只需投射到 USHORT 就可以了。看起来 BinaryWriter 对字符使用 UTF8 编码。所以 ushort 可以防止它,一切正常。无论如何,谢谢你的回答。
  • @zgnilec System.Text.Encoding.Unicode 应该是 UTF-16(小端)编码。如果您需要,请使用那个。
  • 哦,抱歉,我有点累,甚至没有看到你将流设置为特定编码:) 只是以为你做了转换或 smth:O 需要睡觉,你得到了最佳答案,谢谢。跨度>
猜你喜欢
  • 2016-10-01
  • 2014-03-18
  • 2021-12-25
  • 2023-03-27
  • 2017-11-23
  • 2011-05-03
  • 1970-01-01
  • 2011-07-22
  • 2011-04-21
相关资源
最近更新 更多