我用在C#中做一个按钮,这个按钮是输出数据保存到一个html文件。
然后关闭程序(排除了文件占用问题)
接着打开这个html文件,表格格式确正确,却发现内容是乱码。
用记事本打开,查看里面的内容完全正确,然后我一个字符都不改动的情况下保存文件,然后再打开这个html文件乱码问题不见了!! 不懂得问题出在哪里了,请各位大侠指教!~~ 3QHTMLWinForm

解决方案 »

  1.   

    把你的“保存到一个html文件”代码贴出来
      

  2.   

    你怎么保存的?
    没用Encoding参数吧。
      

  3.   

    下面是我这个方法的所有代码:
     private void butPrint_Click(object sender, EventArgs e)
            {            InWarehouse inw = this.GetInWarehouse();
                if (!Validate(inw))
                {
                    MessageBox.Show("对不起,入库单数据不完整!~");
                    return;
                }            string path = "D:\\明峰石业\\打印数据\\入库单\\";
                string fileName = path+"tempIntWarehouse.html";            if (!Directory.Exists(path))//如果不存在就创建file文件夹 
                {
                    Directory.CreateDirectory(path);
                }
                               using (StreamWriter sw = new StreamWriter(fileName,false))
                    {
                        // Add some text to the file.                    #region 设置                    sw.WriteLine("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
                        sw.WriteLine("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
                        sw.WriteLine("<head>");
                        sw.WriteLine("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\" />");
                        sw.WriteLine("<title>打印入库单 </title>");
                        sw.WriteLine("<style type=\"text/css\">");
                        sw.WriteLine("<!--");
                        sw.WriteLine(".STYLE1 { font-size: 30px; font-weight: bold; }");
                        sw.WriteLine(".p1{ font-size:15px;line-height:10%}");
                        sw.WriteLine("-->");
                        sw.WriteLine("</style>");
                        sw.WriteLine("</head>");
                        #endregion                    sw.WriteLine("<body>");                    sw.WriteLine("<p align=\"center\" class=\"STYLE1\" > 入 库 单</p>");
                        //ID
                        sw.WriteLine("<p align=\"center\">入库单ID:"+this._inWarehouse.Id.ToString()+"</p>");
                        sw.WriteLine("<table width=\"1052\" height=\"245\" border=\"1\" bordercolor=\"#000000\" cellspacing=\"0px\"  align=\"center\" >");
                        sw.WriteLine("  <tr>");
                        //商家
                        sw.WriteLine("    <td width=\"184\" height=\"51\">商家:"+inw.Businesses.Name+"</td>");
                        //入库时间
                        sw.WriteLine(" <td width=\"215\">入库时间:"+inw.IntoReserveDate+"</td>");
                        //仓库
                        sw.WriteLine(" <td width=\"216\">存入到:"+inw.Warehouse.Name+"</td>");
                        //石材编号
                        sw.WriteLine(" <td width=\"215\">石材编号:"+inw.Number+"</td>");
                        //车牌
                        sw.WriteLine(" <td width=\"200\">车牌:"+inw.License_plate+"</td>");                    sw.WriteLine("  </tr>");
                        sw.WriteLine("  <tr>");
                        
                        if (this.ridBox.Checked)
                        //集装箱
                        {
                            sw.WriteLine(" <td height=\"57\">集装箱:"+inw.BoxFreightcs.BoxNumber+"</td>");
                        }
                        else
                        //单车
                        {
                            sw.WriteLine(" <td height=\"57\">单车</td>");
                        }
                        //运费
                        sw.WriteLine("<td>运费:12000</td>");
                        //已付运费
                        sw.WriteLine("<td>已付运费:0元</td>");
                        //物流公司
                        sw.WriteLine("<td colspan=\"2\">物流公司:天宝物流</td>");
                        sw.WriteLine("</tr>");                    #region 石材列表                    //临时变量
                        float temp = 0f;
                        string str = "";
                        for (int i = 0; i < inw.StoneList.Count; i++)
                        {
                            sw.WriteLine("<tr>");
                            sw.WriteLine("<td height=\"66\" colspan=\"5\"><table width=\"1043\" height=\"62\" border=\"0\" cellspacing=\"0\">");
                            sw.WriteLine("<tr>");
                            //品名
                            sw.WriteLine(" <td width=\"138\" height=\"32\">"+inw.StoneList[i].Name.Name+"</td>");
                            //厚度
                            sw.WriteLine("<td width=\"143\">"+inw.StoneList[i].Thickness.ToString()+"CM厚</td>");
                            //板面
                            sw.WriteLine("<td width=\"203\">"+inw.StoneList[i].Surface.Name+"</td>");
                            //防护
                            switch (inw.StoneList[i].Procect)
                            {
                                case Protect.oily:
                                    str = "油性";
                                    break;
                                case Protect.waterborne:
                                    str = "水性";
                                    break;
                                default:
                                    str = "无";
                                    break;
                            }
                            sw.WriteLine("<td width=\"154\">防护:"+str+"</td>");
                            //使用部位
                            sw.WriteLine("<td width=\"182\">使用部位:"+inw.StoneList[i].Position+"</td>");                        #region 石材宽度
                            sw.WriteLine(" <td width=\"211\" rowspan=\"2\">");
                            sw.WriteLine("<table width=\"211\" height=\"60\" border=\"0\" cellspacing=\"0\">");
                            sw.WriteLine(" <tr>");
                            sw.WriteLine("<td>600头</td>");
                            sw.WriteLine("<td>100平方</td>");
                            sw.WriteLine(" </tr>");
                            sw.WriteLine(" <tr>");
                            sw.WriteLine("<td height=\"27\">800头</td>");
                            sw.WriteLine("<td>150平方</td>");
                            sw.WriteLine("  </tr>");
                            sw.WriteLine("</table>");
                            sw.WriteLine("</td>");
                            #endregion                        sw.WriteLine("</tr>");
                            sw.WriteLine(" <tr>");
                            //板型
                            switch (inw.StoneList[i].Shape)
                            {
                                case Shape.dysmorphism:
                                    str = "异形";
                                    break;
                                case Shape.specification:
                                    str = "规格板";
                                    break;
                                default:
                                    str = "毛板";
                                    break;
                            }
                            sw.WriteLine(" <td>" + str + "</td>");
                            //面积单位
                            sw.WriteLine(" <td>"+inw.StoneList[i].Count.ToString()+inw.StoneList[i].Unit+"</td>");
                            //单价
                            sw.WriteLine(" <td>"+inw.StoneList[i].Price.ToString()+"元/"+inw.StoneList[i].Unit+"</td>");
                            //金额
                            temp = inw.StoneList[i].Count * inw.StoneList[i].Price;
                            sw.WriteLine("<td>金额:" + temp.ToString() + "</td>");
                            sw.WriteLine("<td></td>");
                            sw.WriteLine("</tr>");
                            sw.WriteLine(" </table>");
                            sw.WriteLine("</td>");
                            sw.WriteLine("</tr>");
                        }
                                            #endregion
                        sw.WriteLine("<tr>");
                        sw.WriteLine("<td height=\"57\" colspan=\"3\"><table width=\"650\" height=\"43\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">");
                        sw.WriteLine(" <tr>");
                        sw.WriteLine(" <td width=\"51\">备注:</td>");
                        sw.WriteLine(" <td width=\"599\"><p class=\"p1\">" + inw.Res + "</p>");                   
                        sw.WriteLine(" </tr>");
                        sw.WriteLine(" </table></td>");
                        sw.WriteLine("<td>货款金额:"+inw.Total.ToString()+"元</td>");
                        sw.WriteLine("<td>已付:"+inw.Paid.ToString()+"元</td>");
                        sw.WriteLine(" </tr>");
                        sw.WriteLine("</table>");
                        sw.WriteLine("</body>");
                        sw.WriteLine("</html>");
                        sw.Close();
                    }        }
      

  4.   

    我把content=\"text/html; charset=gb2312\"
    改为content=\"text/html; charset=UTF-8\"
    就可以了,谢谢各位了。