为什么ANSI编码csv导致问题而不是Latin-1编码?

时间:2017-08-15 10:22:37

标签: csv encoding mailmerge

我正在读取数据库记录并将其写入csv文件。

  • 其中;是分隔符,CRLF结束行
  • 并且所有值都与:""
  • 密切相关
  • 值中的每个"都会使用\"
  • 进行转义
  • 其中vba中的转义字符\"

    cell = <A:"Hello B">

    cell = "<A:""Hello B"">"

    row = <"<A:""Hello B"">" ; "<B:""Hello A"">"CRLF>

现在,值可以包含所有类型的引号,例如

  • rigth双引号
  • 并留下双引号

导致missbehaviour如果我在word的合并邮件中打开文件

但是,如果我在 excel 中打开 csv 文件,它将作为预期工作。

用于打开文件的vba代码是

ActiveDocument.MailMerge.OpenDataSource filePath

编码

似乎有问题

所以我的问题应该是如何将字符串编码为例如ISO-8859-1(拉丁文1)

编码

存在问题

当mysql中的表是

  • WIN 1252(ANSI)编码合并邮件错误地加载csv
  • ISO-8859-1(Latin-1)编码合并邮件正确加载csv

解决此问题的任何解决方案?

1 个答案:

答案 0 :(得分:0)

今天,我解决了Microsoft Access中MailMerge中的变音符问题。也许我的解决方案也适合您的问题。 “ objWordDoc.TextEncoding = 1250”起到了神奇的作用。

Set objWordDoc = objWord.Documents.Add(MergeDocumentFilename)
With objWordDoc.MailMerge
    .OpenDataSource name:=CSVFileName
    .Destination = wdSendToNewDocument
    objWordDoc.TextEncoding = 1250
End With