当前位置: 首页 > 面试题库 >

将包含混合编码类型的Postgresql数据库从SQL_ASCII转换为UTF-8

屠嘉
2023-03-14
问题内容

我有一个Postgresql数据库,我想转换为UTF-8。

问题在于当前使用的是SQL_ASCII,因此尚未对其输入进行任何形式的编码转换,因此最终在表中混合了多种编码类型的数据。一行可能包含编码为UTF-8的值,另一行可能是ISO-8859-x或Windows-125x等。

这使得执行数据库转储并将其转换为UTF-8(以将其导入到新的UTF-8数据库中)变得很困难。如果数据全部是一种编码类型,那么我可以通过iconv运行转储文件,但是我认为这种方法在这里行不通。

从根本上讲,问题是否在于了解每个数据的编码方式?在这里,未知的地方是否可以解决,甚至可以猜测?理想情况下,我会喜欢一个脚本,该脚本可以接收一个文件,任何文件,并吐出有效的UTF-8。


问题答案:

正是 问题是编码::
FixLatin
被写入解决*。

如果安装Perl模块,则还将获得fix_latin命令行实用程序,您可以像这样使用它:

pg_restore -O dump_file | fix_latin | psql -d database

阅读文档的“限制”部分以了解其工作原理。

[*]注意,我假设您说ISO-8859-x时表示ISO-8859-1,而当您说CP125x时表示CP1252-因为ASCII,UTF-8,Latin-1和WinLatin-1混合使用是很常见的情况。但是,如果您确实确实混用了东西方编码,那么对不起,但您被搞砸了:-(



 类似资料:
  • 本文向大家介绍PHP 将ASCII转换为UTF-8编码,包括了PHP 将ASCII转换为UTF-8编码的使用技巧和注意事项,需要的朋友参考一下 如果我们知道当前的编码是ASCII,则可以使用'iconv'函数将ASCII转换为UTF-8。原始字符串可以作为参数传递给iconv函数,以将其编码为UTF-8。 示例 具有特殊字符的字符串被分配给'str'变量。它以当前所在的编码以及需要转换为的编码传递

  • 我有一个简单的服务器端代码,它接受请求xml并将其作为字符串插入Oracle数据库Clob列。问题是客户端发送带有CP1251编码文本的请求xml,但我需要使用UTF-8编码将其插入Oracle。现在我用于CP1251的代码是: 此代码识别CP1251中编码的文本。这项任务是使用UTF-8编码的可读文本进行相同的操作。请提出任何意见。 我尝试了这个,但它产生了不可读的字符,而不是西里尔:

  • 问题内容: 我需要将文本文件转换为String,最后,我应该将其作为输入参数(类型InputStream)放入IFile.create(Eclipse)。寻找示例或方法,但仍然不知道…需要您的帮助! 只是为了测试,我确实尝试将原始文本文件转换为使用此代码编码的UTF-8 但即使以为最终的* .test.txt文件具有UTF-8编码,里面的字符也已损坏。 问题答案: 您需要使用参数指定的编码。 这也

  • 问题内容: 我有一个包含TEXT等数组的复合类型。我在主表中使用它来创建复合类型的数组。 如何生成INSERT命令(不使用复合类型的默认字段名称)?我可以使用复合数组创建一个TEMPORARY TABLE,然后将其插入主表吗? 例如: 第一个INSERT失败,并显示以下消息: 错误:INSERT具有比目标列更多的表达式。 有或没有array []构造都失败。 我的实际使用情况要复杂得多,因为该复合

  • 我需要将多个CSV文件(使用不同的编码)转换为UTF-8。 这是我的代码: 当我尝试运行此代码时,我得到以下错误: UnicodeDecodeError:'utf-8'编解码器无法解码位置5057的字节0xf3:无效的延续字节 有人能帮我吗?谢谢

  • 在我的Silverlight应用程序中,我得到了一个用windows-1252编码的XML文件。现在我的问题,它不会正确显示,直到Windows-1252字符串转换为UTF8字符串。在一个正常的C#环境中,这不会是一个大问题:在那里我可以做这样的事情: (将字符串的字符编码从windows-1252转换为utf-8) 但是silverlight不支持windows-1252,它只支持unicode