【问题标题】:PostgreSQL Escape Microsoft Special Characters In Select QueryPostgreSQL 在选择查询中转义 Microsoft 特殊字符
【发布时间】:2019-08-15 08:17:00
【问题描述】:

PostgreSQL、DBvisualizer 和 Salesforce

我正在从数据库表中选择记录并将它们导出到 csv 文件:逗号分隔和 UTF8 编码。我将文件发送给正在将数据上传到 Saleforce 的用户。我不了解 Salesforce,所以我对此一无所知。她报告说文件中的某些数据显示为乱码(非 UTF8)字符(见下文)。

似乎我们的一些用户正在将电子邮件复制/粘贴到网络表单中,然后将它们插入到我们的数据库中。电子邮件标题中的日期(我相信)是显示为乱码的文本。

11‎/‎17‎/‎2015‎ ‎7‎:‎26‎:‎26‎ ‎AM

变成

‎11‎/‎16‎/‎2015‎ ‎07‎:‎26‎:‎26‎ ‎AM

db 字段中的文本看起来很正常。当它被导出到一个 csv 文件,然后在像 Wordpad 或 Salesforce 这样的文本编辑器中查看该文件时。然后她看到了奇怪的字符。

这只发生在复制/粘贴到表单/db中的文本中的日期。我不知道如何或者是否有办法删除这些“看不见”的字符。

每次都是相同的三个字符:‎ 我在这些上做了一个 regex_replace() 以将它们删除,但它不起作用。我认为由于在 db 字段中看不到它们,因此正则表达式确实看到了它们。

似乎即使我看不到这些字符,但它们必须以某种形式存在,使它们在导出到 csv 后显示在写字板或 Salesforce 客户端等文本编辑器中。

我可能可以在文本编辑器中进行大量搜索/查找/替换,但最好在 sql 中执行此操作并避免每次都执行额外步骤。

希望有人看到这一点并知道一个简单的解决方法。

感谢任何可能有帮助的想法或建议。

【问题讨论】:

    标签: postgresql csv salesforce


    【解决方案1】:

    序列‎ 是一个left-to-right mark,以UTF-8 编码(如0xE2 0x80 0x8E),但读取时就像在Windows-1252 中一样。

    从左到右的标记是不可见的,因此您在数据库中看不到它的事实表明它已正确编码,但在不准确知道之后数据经过的路径的情况下,很难猜出准确的位置它被误解了。

    无论如何,您应该能够使用其 Unicode 转义序列替换 Postgres 查询中的字符:E'\u200E'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-23
      • 1970-01-01
      • 2016-01-14
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      • 2022-01-19
      相关资源
      最近更新 更多