代码之家  ›  专栏  ›  技术社区  ›  G_Hosa_Phat

用转义字符写入“latin1”编码字节数组

  •  0
  • G_Hosa_Phat  · 技术社区  · 7 年前

    我在做一个数据库导入/导出过程VB.NET版它将MySQL(5.5)数据库中的数据写入纯文本文件。应用程序将数据读取到 DataTable OutputFile System.IO.StreamWriter 对象)。此数据库中表的编码为 Latin1 MediumBlob

    在尝试验证应用程序的输出时,我使用MySQL工作台直接从数据库中导出数据,然后将其与从应用程序中写入相同数据时得到的结果进行比较。在MySQL工作台的直接导出中,我看到其中一些字节是用反斜杠导出的。但是,当我通过应用程序读取数据时,不会出现此转义字符。通过Notepad++查看,它清楚地显示了两个输出结果之间的一些明显差异(参见屏幕截图)。

    Notepad++ comparison of output results

    很明显,虽然表面上很相似,但两者并不完全相同。我的应用程序不包括转义字符的反斜杠,还有一些字符,如 NULL

    OutputFile.Write("'" & System.Text.Encoding.GetEncoding(28591).GetString(CType(COPYRow(ColumnIndex), Byte())) & "'")
    

    GetString

    当我开始使用PostgreSQL数据库时,我“假设”这个方法通常也应该工作,但可能使用不同的编码。我试图构建尽可能“通用”的东西,但我必须担心在运行时指定编码,而不是以后硬编码。


    编辑

    我刚碰到另一个问题,可能会给我指出正确的方向: Convert a Unicode string to an escaped ASCII string

    0 回复  |  直到 7 年前