|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
drroc (mvcxe) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2010/5/12 12:12:20 |
标题: |
Delphi2010 UTF8Decode出错,求救,急急急 |
浏览:1681 |
|
加入我的收藏 |
楼主: |
问题描述: 在用Delphi2010写isapi,接收上传文件,发现当文件名为中文时,用UTF8Decode解码会出错,“开发计划.xls”解成:“开发计?xls”
详细过程: 在Delphi2010中,接收到的数据存于AnsiString中,内容我用TStringStream保存下来,见附件123.txt,片段如下: ----------Ij5KM7GI3Ij5KM7ae0Ef1ei4KM7GI3 Content-Disposition: form-data; name="Filename"
寮€鍙戣鍒?xls ----------Ij5KM7GI3Ij5KM7ae0Ef1ei4KM7GI3 Content-Disposition: form-data; name="op"
upload ----------Ij5KM7GI3Ij5KM7ae0Ef1ei4KM7GI3 Content-Disposition: form-data; name="Filedata"; filename="寮€鍙戣鍒?xls" Content-Type: application/octet-stream
格式anscii,用editplus打开时,强制用utf8编码,中文解码正确: ----------Ij5KM7GI3Ij5KM7ae0Ef1ei4KM7GI3 Content-Disposition: form-data; name="Filename"
开发计划.xls ----------Ij5KM7GI3Ij5KM7ae0Ef1ei4KM7GI3 Content-Disposition: form-data; name="op"
upload ----------Ij5KM7GI3Ij5KM7ae0Ef1ei4KM7GI3 Content-Disposition: form-data; name="Filedata"; filename="开发计划.xls" Content-Type: application/octet-stream
但在delphi2010中用代码: sl:=TStringList.Create; sl.LoadFromFile('g:\test\123.txt'); Memo1.Lines.Text:=UTF8Decode(sl.Text); sl.Free; 却得到结果: ----------Ij5KM7GI3Ij5KM7ae0Ef1ei4KM7GI3 Content-Disposition: form-data; name="Filename"
开发计?xls ----------Ij5KM7GI3Ij5KM7ae0Ef1ei4KM7GI3 Content-Disposition: form-data; name="op"
upload ----------Ij5KM7GI3Ij5KM7ae0Ef1ei4KM7GI3 Content-Disposition: form-data; name="Filedata"; filename="开发计?xls" Content-Type: application/octet-stream
----------------------------------------------
MVCXE中国首个DELPHI MVC WEB框架:https://www.mvcxe.com/ |
作者: |
drroc (mvcxe) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2010/5/12 12:15:14 |
1楼: |
有人可能说那是TStringList的问题,但实际上,我在isapi中,直接对原始AnsiString中进行UTF8Decode也出出乱码
我最终的目的是编一函数,能从这个AnsiString中获取到那个文件名,和内容
----------------------------------------------
MVCXE中国首个DELPHI MVC WEB框架:https://www.mvcxe.com/
|
作者: |
drroc (mvcxe) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2010/5/12 17:45:49 |
2楼: |
竟然没有答,人气啊,还是自已解决了
用TStringList的确是不行,因为TStringList用的是String,unicode的,不能存某一些utf8字符,对原始的ansistring进行utf8Decode是正确的,没有乱码,楼上所述是因为我前面做了一次string的转换,所以有乱码了
不过还是不太明白,为什么unicode存不了一些utf8字符
可以参考csdn的讨论贴: http://topic.csdn.net/u/20100121/20/6a051e08-c744-4042-b53a-b76f1af669d7.html
----------------------------------------------
MVCXE中国首个DELPHI MVC WEB框架:https://www.mvcxe.com/
|
作者: |
|
2010/5/24 12:04:37 |
3楼: |
请问是如何解决的?我也碰到了这个问题。
----------------------------------------------
-
|
|