导出CSV文件乱码问题

shaoyu3399 2010-11-09 10:52:39
导出到csv文件用记事本打开显示正常,默认的Excel打开显示乱码,文件中的数据是日文的,各位大侠指点下
...全文
552 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnuser1 2010-11-09
  • 打赏
  • 举报
回复
把导出代码贴出了看看。
didiaogao 2010-11-09
  • 打赏
  • 举报
回复
做对日的啊。。只要操作系统对日文的就没事吧。我以前写过
shaoyu3399 2010-11-09
  • 打赏
  • 举报
回复
额...不好意思,我忘了说,这方法是日方写的,我这边操作系统也是日文的,table里的数据也是日文,可是就是显示乱码,记事本另存时我看了下编码方式是utf-8...
shaoyu3399 2010-11-09
  • 打赏
  • 举报
回复
恩,我和经理说下,谢谢
兔子-顾问 2010-11-09
  • 打赏
  • 举报
回复
不行。谁写给你的,你要跟领导说。那方法没考虑多国语言。不支持日文。
shaoyu3399 2010-11-09
  • 打赏
  • 举报
回复
逍遥大哥,我用的导出方法是任务书指定的封装好的方法,我只能传一个table名字作参数调用一下....填充table前是否可以变换编码呢?
兔子-顾问 2010-11-09
  • 打赏
  • 举报
回复
写文件的时候最后加一个参数:
Encoding.GetEncoding("Shift-JIS")
aamaomao 2010-11-09
  • 打赏
  • 举报
回复
编码问题吧,你用记事本另存时,可以看到文件当前的编码方式,试试改成其他编码方式再用excel打开看看
夜雨悠扬 2010-11-09
  • 打赏
  • 举报
回复
哦,对了,CSV文件本来就不应该用EXCEL查看的。
它只是一个文本。
如果需要用EXCEL的话,需要专门生成EXCEL文件比较好。
夜雨悠扬 2010-11-09
  • 打赏
  • 举报
回复
建议日方改写,增加编码指定的部分。
WriteAllText应该有重载函数的。
aamaomao 2010-11-09
  • 打赏
  • 举报
回复
excel打开文件时可以选择文件原始编码,你选utf-8看看
shaoyu3399 2010-11-09
  • 打赏
  • 举报
回复
这是我反编译出来的...老兄给看看
Public Shared Function CSVOutput(ByVal ExportData As DataTable, ByVal Optional FileName As String = "") As Boolean
Dim flag As Boolean
Try
Dim enumerator As IEnumerator
If (FileName = "") Then
Using dialog As SaveFileDialog = New SaveFileDialog
dialog.Title = ChrW(65315) & ChrW(65331) & ChrW(65334) & ChrW(12501) & ChrW(12449) & ChrW(12452) & ChrW(12523) & ChrW(20445) & ChrW(23384)
dialog.InitialDirectory = Conversions.ToString(5)
dialog.FileName = (ExportData.TableName & ".csv")
dialog.Filter = "CSV" & ChrW(12501) & ChrW(12449) & ChrW(12452) & ChrW(12523) & "|*.csv|" & ChrW(12377) & ChrW(12409) & ChrW(12390) & ChrW(12398) & ChrW(12501) & ChrW(12449) & ChrW(12452) & ChrW(12523) & "|*.*"
dialog.FilterIndex = 1
dialog.RestoreDirectory = True
dialog.CreatePrompt = False
dialog.OverwritePrompt = True
dialog.CheckPathExists = True
dialog.AddExtension = True
If (dialog.ShowDialog = DialogResult.OK) Then
FileName = dialog.FileName
End If
End Using
End If
If (FileName = "") Then
Return False
End If
Dim text As String = String.Empty
Dim num3 As Integer = (ExportData.Columns.Count - 1)
Dim i As Integer = 0
Do While (i <= num3)
If (ExportData.Columns.Item(i).Caption <> "") Then
If ([text] <> String.Empty) Then
[text] = ([text] & ",")
End If
[text] = ([text] & """" & ExportData.Columns.Item(i).Caption & """")
End If
i += 1
Loop
[text] = ([text] & ChrW(13) & ChrW(10))
MyProject.Computer.FileSystem.WriteAllText(FileName, [text], False)
Try
enumerator = ExportData.Rows.GetEnumerator
Do While enumerator.MoveNext
Dim current As DataRow = DirectCast(enumerator.Current, DataRow)
[text] = ""
Dim num4 As Integer = (ExportData.Columns.Count - 1)
Dim j As Integer = 0
Do While (j <= num4)
If (ExportData.Columns.Item(j).Caption <> "") Then
If ([text] <> String.Empty) Then
[text] = ([text] & ",")
End If
[text] = ([text] & """" & current.Item(j).ToString & """")
End If
j += 1
Loop
[text] = ([text] & ChrW(13) & ChrW(10))
MyProject.Computer.FileSystem.WriteAllText(FileName, [text], True)
Loop
Finally
If TypeOf enumerator Is IDisposable Then
TryCast(enumerator,IDisposable).Dispose
End If
End Try
flag = True
Catch exception1 As Exception
ProjectData.SetProjectError(exception1)
Dim ex As Exception = exception1
ixException.ExceptionMsgBox(ex, "CSV" & ChrW(20986) & ChrW(21147) & ChrW(26178) & ChrW(12395) & ChrW(12456) & ChrW(12521) & ChrW(12540) & ChrW(12364) & ChrW(30330) & ChrW(29983) & ChrW(12375) & ChrW(12414) & ChrW(12375) & ChrW(12383) & ChrW(12290), "CSV" & ChrW(20986) & ChrW(21147))
flag = False
ProjectData.ClearProjectError
End Try
Return flag
End Function

16,552

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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