none
【求助】:以utf8的编码方式写入文件 RRS feed

  • 问题

  • 环境:Visual Stdio 2010

    问题:

    1、现有的txt文件默认编码方式是ANSI,里面的内容是汉字,另存为UTF-8时 能正常显示汉字。

    2、我用System.IO.File.WriteAllText("d:\1.txt", "", System.Text.Encoding.UTF8)这种方式新建了一个text文件,然后用Obj = fsObj3.OpenTextFile("d:\1.txt", IOMode.ForAppending)  Obj.WriteLine("你好,你好,你还")这种方式连续写入,但生成的文件打开后全是乱码!

    3、有没有什么好的方法新建txt文件后用UTF-8编码的方式写入文件呢?

    2011年11月8日 8:00

答案

  • 你好:)

    就我所言,你可以在添加之前,先把一句话转化成UTF-8的Bytes,然后使用FileStream加入即可。示例代码:

     System.IO.File.WriteAllText("d:\1.txt""你好!"System.Text.Encoding.UTF8)
            Dim fs As FileStream = File.Open("d:\1.txt"FileMode.Append)
            fs.Write(Encoding.UTF8.GetBytes("你好!"), 0Encoding.UTF8.GetBytes("你好!").Length)
            fs.Close()

    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处
    2011年11月9日 6:29
    版主

全部回复

  • 你好:)

    就我所言,你可以在添加之前,先把一句话转化成UTF-8的Bytes,然后使用FileStream加入即可。示例代码:

     System.IO.File.WriteAllText("d:\1.txt""你好!"System.Text.Encoding.UTF8)
            Dim fs As FileStream = File.Open("d:\1.txt"FileMode.Append)
            fs.Write(Encoding.UTF8.GetBytes("你好!"), 0Encoding.UTF8.GetBytes("你好!").Length)
            fs.Close()

    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处
    2011年11月9日 6:29
    版主
  • 你可以试一下,在文件写入之前做一个编码转化,就是 Encoding.Convert (Encoding.Default ,Encoding.UTF8,Encoding.Default.GetBytes ("需要写入的信息"))

    因为不同的系统在读取是,所采用的解码不一样,winxp,中文系统,可以识别,以默认方式写入的文本,win7不可以。当然,并不是所有情况都一样,还有针对不同的应用软件也不一样。

    2011年11月19日 2:44