【问题标题】:Non-ISO extended-ASCII CSV giving special character while importing in DB非 ISO 扩展 ASCII CSV 在数据库中导入时给出特殊字符
【发布时间】:2016-10-01 12:06:11
【问题描述】:

我从 S3 服务器获取 CSV 并使用 java 将其插入 PostgreSQL。

S3Object object = s3Client.getObject(new GetObjectRequest(bucketName, key));
BufferedReader reader = new BufferedReader(
                           new InputStreamReader(object.getObjectContent())
                        );

对于某些行,列中的值包含特殊字符 �。我尝试将编码 UTF-8UTF-16ISO-8859-1InputStreamReader 一起使用,但没有成功
当使用编码 WIN-1252 时,数据库仍然显示一些特殊字符,但是当我将数据导出到 CSV 时,它显示的字符与我在原始文件中找到的相同。
但是当我在记事本中打开文件时,字符很好,但是当我在 excel 中打开它时,会出现相同的特殊字符。

【问题讨论】:

  • 问题陈述不清楚。请显示您用于将数据插入数据库的代码。您将 PostgreSQL 客户端编码设置为哪个值?什么是 PostgreSQL 数据库编码?您在原始文件中找到的字节是什么?您如何以及使用哪种客户端编码再次从数据库中导出数据?第二个导出的文件中有哪些字节?
  • 另外,你能举个例子吗?即使您不能 100% 确定编码,我们也可能会根据实际字符确认您的假设。

标签: postgresql encoding amazon-s3


【解决方案1】:

所有 PostgreSQL 的东西都是无关紧要的; PostgreSQL 几乎可以处理任何编码。使用enca 等实用程序检查您的数据以确定其编码方式,并将您的 PostgreSQL 会话设置为该编码。如果服务器使用相同的编码或某种 Unicode 编码,它应该可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多