打开ANSI csv文件并将内容读取为utf-8

打开ANSI csv文件并将内容读取为utf-8

问题描述:

我在服务器上有一个编码为ANSI的csv文件,并且希望打开它,处理并保存数据库中的内容。 我将重音字符作为“àèìòù”的问题存在无限的问题,取而代之的是“?”。打开ANSI csv文件并将内容读取为utf-8

html标头中的内容设置为utf-8。 这是我的代码

Response.CharSet = "UTF-8" 

... 

Set objStream = CreateObject("ADODB.Stream") 
objStream.Type = 2 
objStream.CharSet = "utf-8" 
objStream.Open 
objStream.Position = 0 
objStream.LoadFromFile(path) 

strData = objStream.ReadText() 
Response.write(strData) '<== just to see 

objStream.Close 
Set objStream = Nothing 

起初我是用一个单一的文件系统对象,但看它有更多的问题处理编码

+0

也许[this](http://*.com/a/25685355/2861476)可以帮助你 – 2015-03-24 22:51:49

+0

我试过了。在服务器上保存一个完全用utf8编码的文件,所有的字符都可读,但如果我用上面的代码读取它,它会再次给出结果为“Corposit ”。如果我更改objStream.CharSet =“unicode”中的参数,它会给我一长串“????????????” – Fehu 2015-03-25 12:45:21

+0

你从哪里得到错误的数据,在数据库或'Response'输出中? – 2015-03-25 14:36:03

内部,VBScript中的字符串是UTF-16编码。读取的IO函数必须在默认情况下被告知/假设正确的源编码以将源转换为UTF-16。 IO功能,写入必须被告知/假定默认情况下所需的输出编码将UTF-16转换为所需的编码。

如果你的文件是真的(某种)ANSI那么你

objStream.CharSet = "utf-8" 

是错误的。它应该是文件真正使用的编码名称(cpXXX,ISO_YYY,ZZZ)。

您是否使用FileSystemObject进行测试?也许它会猜对,你的问题没有额外的努力就解决了。

+0

我已经尝试过FileSystemObject,但在相同的字符上生成工件。我没有太多的控制源文件,但我现在使用的是csv与excel表格生成excel 2010。我知道这只是因为notepad ++这样说,所以我甚至不知道有多个ansi标准:S – Fehu 2015-03-25 10:01:42

+1

@Fehu - 请参阅http://*.com/questions/701882/what-is-ansi-format。 – 2015-03-25 13:21:20