Ir para o conteúdo
Ricardo Goncalves

Exportar ficheiro com UTF8 BOM

Mensagens Recomendadas

Ricardo Goncalves

Bom dia,

 

Precisava da vossa ajuda no sentido de perceber o que poderá estar mal no meu codigo que coloco em baixo.

                If CheckBD = "0" Then
                    With mycommand
                        .Connection = con
                        .CommandText = "CREATE TABLE EnviosChrono (NumConta int,NumCliente int,Cliente nvarchar(254),Morada nvarchar(50),CodPostal int,Cidade nvarchar(50)," + _
                                        "Pais nvarchar(5),Contacto Nvarchar(254),Telefone int,Peso int,Referencia int not null,Volumes int,CriadoPor nvarchar(50),data datetime)"
                        .ExecuteNonQuery()
                    End With
                Else
                    With mycommand
                        .Connection = con
                        For i As Integer = 0 To DataGridView1.RowCount - 1
                            .CommandText = "insert into EnviosChrono values('" & DataGridView1.Rows(i).Cells(0).Value & "','" & DataGridView1.Rows(i).Cells(1).Value & "','" & DataGridView1.Rows(i).Cells(2).Value & "'," + _
                                "'" & DataGridView1.Rows(i).Cells(3).Value & "','" & DataGridView1.Rows(i).Cells(4).Value & "','" & DataGridView1.Rows(i).Cells(5).Value & "','" & DataGridView1.Rows(i).Cells(6).Value & "'," + _
                                "'" & DataGridView1.Rows(i).Cells(7).Value & "','" & DataGridView1.Rows(i).Cells(8).Value & "','" & DataGridView1.Rows(i).Cells(13).Value & "','" & DataGridView1.Rows(i).Cells(14).Value & "'" + _
                                ",'" & DataGridView1.Rows(i).Cells(15).Value & "','" & Departamento & "',GETDATE())"
                            .ExecuteNonQuery()
                        Next
                    End With
                End If
            Catch Ex As Exception
                MsgBox(Ex.Message, MsgBoxStyle.Critical)
            End Try
            Try
                Dim enc As Encoding = New UTF8Encoding(True)
                Dim Caminho As String = LeINI("Exportação", "Caminho", "")
                Dim data As String = DateTime.Now.ToString("yyyyMMdd_HHmmss")
                Dim filePath As String = " " & Caminho & "Chrono" & data & ".csv"
                Dim delimeter As String = ";"
                Dim sb As New StringBuilder
                For i As Integer = 0 To DataGridView1.Rows.Count - 1
                    Dim array As String() = New String(DataGridView1.Columns.Count - 1) {}
                    'If i.Equals(0) Then
                    '    For j As Integer = 0 To DataGridView1.Columns.Count - 1
                    '        array(j) = DataGridView1.Columns(j).HeaderText
                    '    Next
                    '    sb.AppendLine(String.Join(delimeter, array))
                    'End If
                    For j As Integer = 0 To DataGridView1.Columns.Count - 1
                        If Not DataGridView1.Rows(i).IsNewRow Then
                            array(j) = DataGridView1(j, i).Value.ToString
                        End If
                    Next
                    If Not DataGridView1.Rows(i).IsNewRow Then
                        sb.AppendLine(String.Join(delimeter, array))
                    End If
                Next
                File.WriteAllText(filePath, sb.ToString, enc)
                'Opens the file immediately after writing
                'Process.Start(filePath)
                Dim AckTime As Integer, InfoBox As Object
                InfoBox = CreateObject("WScript.Shell")
                AckTime = 1
                Select Case InfoBox.Popup("Ficheiros Criados Com Sucesso!!!", _
                AckTime, "Mensagem", 0)
                    Case 1, -1
                End Select
                DataGridView1.DataSource = Nothing
                DataGridView1.Rows.Clear()
            Catch Ex As Exception
                MsgBox(Ex.Message, MsgBoxStyle.Critical)
            End Try
        End If

O que se está a passar é que a pessar de ter o encoder do utf8 para sair com o BOM(Byte Order Marking)   " Dim enc As Encoding = New UTF8Encoding(True)"  o mesmo está sempre a sair sem BOM, com se tivesse o encoding a false no utf8.

Conseguem me dizer o que poderei estar a fazer de errado?

Obrigado!

 

 

 

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ricardo Goncalves

O mais estranho é que mesmo trocando o encoder para ANSII 

Dim enc As Encoding = New ASCIIEncoding

ele continua a exportar o texto com UTF8.

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.