求救:UTF8 转Unicode的方法.

linzhisong 2005-08-19 11:10:55
用ADO导出的xml是utf8格式的,怎么转化成Unicode格式?

整个文件转化.主要是中文字问题

试了好久不行..


sFilename := 'c:\aa.xml';
DeleteFile(sFilename);
tbl2.Open;
//ds2.CloneCursor(TClientDataSet(tbl2), true);
tbl2.SaveToFile(sFilename, pfXML);
tbl2.LoadFromFile(sFilename);//提示错误.
...全文
274 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueTrees 2005-08-23
  • 打赏
  • 举报
回复
UTF8难道不是unicode的一种编码?
linzhisong 2005-08-23
  • 打赏
  • 举报
回复
没办法..

只能存为pfadtg格式就没问题了.

散分了..

来者有份!!!
linzhisong 2005-08-19
  • 打赏
  • 举报
回复
ASP也是可以直接创建UNICODE文件的.

delphi没看到有直接可以创建UNICODE文件的方法,晕啊.

都没有处理过ADO导出XML的中文自己解决方法??

konhon 2005-08-19
  • 打赏
  • 举报
回复
用Java就好辦多啦.
konhon 2005-08-19
  • 打赏
  • 举报
回复
http://www.douzhe.com/article/data/38/317.html
一段PHP代碼, 可能有所幫助的.
opqhjb_2002 2005-08-19
  • 打赏
  • 举报
回复
诚心来这里学习。帮顶!
linzhisong 2005-08-19
  • 打赏
  • 举报
回复
数据集关了再Load也是一样的,不行!

逐行转换是不行的,测试过. 没有用.

naughtyboy 2005-08-19
  • 打赏
  • 举报
回复
这个不太懂了
能不能以文本的方式打开
然后调用Utf8ToUnicode逐行转换
将文件转存
snjun 2005-08-19
  • 打赏
  • 举报
回复
数据集是不是要先关了再load啊
hqhhh 2005-08-19
  • 打赏
  • 举报
回复
以前没搞过,不能直接帮你,但给你查到一些,你参考一下
1.utf8转String
function utf8toansistring(utf8str:string; codepage:integer):ansistring;
var
i:integer;
buffer:widestring;
ch,c1,c2:byte;
begin
result:='';
i:=1;
while i<=length(utf8str) do begin
ch:=byte(utf8str[i]);
setlength(buffer,length(buffer)+1);
if (ch and $80)=0 then //1-byte
buffer[length(buffer)]:=widechar(ch)
else begin
if (ch and $e0) = $c0 then begin // 2-byte
inc(i);
c1 := byte(utf8str[i]);
buffer[length(buffer)]:=widechar((word(ch and $1f) shl 6) or (c1 and $3f));
end
else begin // 3-byte
inc(i);
c1 := byte(utf8str[i]);
inc(i);
c2 := byte(utf8str[i]);
buffer[length(buffer)]:=widechar(
(word(ch and $0f) shl 12) or
(word(c1 and $3f) shl 6) or
(c2 and $3f));
end;
end;
inc(i);
end; //while
i := widechartomultibyte(codepage,
wc_compositecheck or wc_discardns or wc_sepchars or wc_defaultchar,
@buffer[1], -1, nil, 0, nil, nil);
if i>1 then begin
setlength(result, i-1);
widechartomultibyte(codepage,
wc_compositecheck or wc_discardns or wc_sepchars or wc_defaultchar,
@buffer[1], -1, @result[1], i-1, nil, nil);
end;
end;

2.
StringToWideChar 函数 将 ANSI 字符串转换为 UNICODE 字符串
linzhisong 2005-08-19
  • 打赏
  • 举报
回复
只有手动的解决方法,就是用记事本令存为Unicode的格式就行了.

程序搞不定!
hthunter 2005-08-19
  • 打赏
  • 举报
回复
TClientDataSet对中文的支持一直是个问题,具体解决方法不清楚,关注一下,呵呵
linzhisong 2005-08-19
  • 打赏
  • 举报
回复
?? 都不屑回答?

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧