怎么输出UTF-8编码的文本文件?
怎么输出UTF-8编码的文本文件?如果是中文输出UTF-8编码的文本文件打开后是不是看不见中文了? --------------------编程问答-------------------- System.IO.File.WriteAllBytes("C:\\1.txt", Encoding.UTF8.GetBytes("字符串")); --------------------编程问答-------------------- System.IO.File.WriteAllBytes("C:\1.txt", Encoding.UTF8.GetBytes("字符串")) --------------------编程问答--------------------
'带 BOM 头的'--------------------编程问答-------------------- 我的WIN7记事本开UTF8文件没问题。 --------------------编程问答--------------------
Dim sw As New System.IO.StreamWriter("C:\temp\1.UTF-8.txt", False, System.Text.Encoding.UTF8)
sw.WriteLine("english")
sw.WriteLine("中文")
sw.Flush()
sw.Close()
ADODB.Recordset(1)
DataSet.Tables(0).Rows(0).Item(1)
這兩句代碼是相同的么? --------------------编程问答--------------------
(Byte Order Mark)
带BOM头与不带BOM头有什么区别? --------------------编程问答--------------------
带 BOM 头,文本编辑器可以用明确的编码进行解码,不出错——除非编辑器不支持。
没带 BOM 头,文本编辑器只能猜测或用默认编码进行解码,容易出现“乱码”。 --------------------编程问答--------------------
请教
是不是普通的文本文件另存的时候,有个编码选择项,选择UTF-8就是不带BOM头的UTF-8的文件了?
我试了一下好像内容没有什么变化 --------------------编程问答-------------------- 看你用什么编辑器,比如vs有utf8 with signature和utf8 withou signature两种编码,大多数编辑器也都有两种选择,除了notepad,它只有一种带bom的。 --------------------编程问答-------------------- 编辑器相关。
比如记事本保存 UTF-8 必定是带 BOM 的。
EmEditor 保存 UTF-8 时还有个选项可选是否带 BOM。 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 我用如下功能从DataGridView里输出的CSV文件是否是UTF8格式? 是否是不带BOM头的?
如果不是怎样修改?
Public Shared Sub ExportToCSV(ByVal dgv As DataGridView, Optional ByVal strfilename As String = "")
Dim saveFileDialog As New SaveFileDialog()
saveFileDialog.Filter = "Excel文件(*.csv)|*.csv|所有文件(*.*)|*.*"
saveFileDialog.FilterIndex = 0
saveFileDialog.FileName = strfilename
saveFileDialog.RestoreDirectory = True
saveFileDialog.Title = "保存为CSV文件"
saveFileDialog.ShowDialog()
If saveFileDialog.FileName.IndexOf(":") < 0 Then
Exit Sub
End If
'被点了"取消"
Dim myStream As IO.FileStream
myStream = saveFileDialog.OpenFile()
Dim sw As New IO.StreamWriter(myStream, System.Text.Encoding.UTF8)
Dim columnTitle As String = ""
Try
'写入列标题
For i As Integer = 0 To dgv.ColumnCount - 1
If i > 0 Then
'columnTitle += vbTab
columnTitle += ","
End If
columnTitle += dgv.Columns(i).HeaderText
Next
sw.WriteLine(columnTitle)
'写入列内容
For j As Integer = 0 To dgv.Rows.Count - 1
Dim columnValue As String = ""
For k As Integer = 0 To dgv.Columns.Count - 1
If k > 0 Then
columnValue += ","
End If
If dgv.Rows(j).Cells(k).Value Is Nothing Then
columnValue += ","
Else
columnValue += dgv.Rows(j).Cells(k).FormattedValue.ToString.Trim()
End If
Next
sw.WriteLine(columnValue)
Next
sw.Close()
myStream.Close()
Catch e As Exception
MessageBox.Show(e.ToString())
Finally
sw.Close()
myStream.Close()
End Try
End Sub
另外,本机输出用EXCEL打开或notepad打开都OK,
其他机器输出拷贝过来notepad打开也ok,但EXCEL打开内容中文部分显示乱码,是否和EXCEL版本有关系?
--------------------编程问答-------------------- 请教: 通过程序直接输出不带BOM头的编码为UTF8格式的CSV文件一般怎么处理? --------------------编程问答--------------------
我用如下功能从DataGridView里输出的CSV文件是否是UTF8格式? 是否是不带BOM头的?
如果不是怎样修改?
[code=VB]New IO.StreamWriter(myStream, System.Text.Encoding.UTF8) '这个带 BOM'
New IO.StreamWriter(myStream) '缺省不带 BOM'[/code' --------------------编程问答--------------------
[code=VB]New IO.StreamWriter(myStream, System.Text.Encoding.UTF8) '这个带 BOM'
New IO.StreamWriter(myStream) '缺省不带 BOM'[/code'
New IO.StreamWriter(myStream) '缺省不带 BOM' 这个不带BOM但没有定义UTF8编码,默认保存为什么编码格式?
--------------------编程问答-------------------- 其中换行符定义为CR+LF是怎么在程序里定义的? --------------------编程问答--------------------
New IO.StreamWriter(myStream) '缺省不带 BOM' 这个不带BOM但没有定义UTF8编码,默认保存为什么编码格式?
UTF-8
其中换行符定义为CR+LF是怎么在程序里定义的?
可以通过 NewLine 属性设置。
补充:.NET技术 , VB.NET