把从数据库读出的数据写入TXT中:要求这个TXT非纯文本的而是Unicode的文本文件(100分)

  • 主题发起人 主题发起人 wyn
  • 开始时间 开始时间
Unicode的文本文件这个是什么格式呀!
 
TXT纯文本是Unicode的文本文件 的形式之一。
 
我用Debug看<br>Unicode都是雙字節的如:開頭:FF FE &nbsp; 回車換行:00 0a 00 0d<br>
 
使用WideString:<br>var<br>&nbsp; &nbsp;s:WideString;<br><br>...<br><br>s:=DBMemoField.Lines.Text;<br><br>Delphi(应该说是Windows)会负责Ansi字符集到Unicode字符集的转换。<br>保存到文件就不说了吧。<br>
 
&nbsp; &nbsp; TFileStream &nbsp; *TT=new(TFileStream("Test.txt",fmCreate);<br>&nbsp; &nbsp; &nbsp;WideString strTemp="test黃花菜<br>&nbsp; &nbsp; &nbsp;char a=0x0a;<br><br>&nbsp; &nbsp; &nbsp;WideString ra+=WideString(a);<br>&nbsp; &nbsp; &nbsp;a=0x0d;<br>&nbsp; &nbsp; &nbsp;ra+=WideString(a);<br>&nbsp; &nbsp; &nbsp;strTemp+=ra;<br>&nbsp; &nbsp; &nbsp;TT-&gt;Write(strTemp.c_bstr(),strTemp.Length()*2);<br>&nbsp; &nbsp; &nbsp;//以上OK!<br>&nbsp; &nbsp; &nbsp;//以下有問題會出現亂碼,Word字段是漢字<br>&nbsp; &nbsp; &nbsp;strTemp+=WideString(adoqWord-&gt;FieldByName("Word")-&gt;AsString)+ra;<br>&nbsp; &nbsp; &nbsp;TT-&gt;Write(strTemp.c_bstr(),strTemp.Length()*2);<br>// &nbsp; &nbsp; TT-&gt;Write(strTemp.c_bstr(),strTemp.Length());<br><br>&nbsp; &nbsp; &nbsp;delete TT;<br>
 
你就把它写TXT纯文本,然后用Word转换成Unicode的文本文件不是OK了
 
TXT前加入FF FE 其他用WideString 不就OK了
 
多人接受答案了。
 
后退
顶部