Sql WINDOWS到Linux字符集问题
我有一组不同的SQL文件,其中包含法语/西班牙语和其他语言字符。在windows中,我们可以看到特定的语言字符,当它传输到Linux时,我可以看到奇怪的字符 我知道windows使用不同的字符集,如windows-1252、windows-1258和iso-8859-1 我们如何更改与Linux中的Windows相似的字符集,以便在从Linux触发查询时不会在DB中插入奇怪的字符 提前谢谢 在windows中,我们可以看到特定的语言字符Sql WINDOWS到Linux字符集问题,sql,linux,perl,Sql,Linux,Perl,我有一组不同的SQL文件,其中包含法语/西班牙语和其他语言字符。在windows中,我们可以看到特定的语言字符,当它传输到Linux时,我可以看到奇怪的字符 我知道windows使用不同的字符集,如windows-1252、windows-1258和iso-8859-1 我们如何更改与Linux中的Windows相似的字符集,以便在从Linux触发查询时不会在DB中插入奇怪的字符 提前谢谢 在windows中,我们可以看到特定的语言字符 您可以在记事本++中打开它,查看文件使用的编码,还可以将其
您可以在记事本++中打开它,查看文件使用的编码,还可以将其转换为UTF-8。如果我正确理解了这个问题,您可以在各种包含非ASCII字符的windows编码中生成SQL脚本。您希望在Linux上执行这些脚本 我认为您可能希望无损地将文件转换为您的LinuxSQL解析器可以处理的内容,可能转换为unicode UTF-8。这种转换可以通过iconv命令行实用程序完成,我相信也有库 然而,一个挑战是您是否知道每个文件的原始编码是什么,因为这不一定会被自动检测到……如果您可以让脚本文件的作者为脚本提供指定的编码,可能会更好。您将要使用或模块。 通常,对于SQL或MySQL,您会将DB编码设置为您喜欢使用的编码。现在大多数人将其设置为UTF-8以支持大量字符集 但是在这种情况下,您可以使用编码来匹配所需的正确编码,这是可行的
use Encode qw(decode encode);
$data = encode("utf8", decode("iso-8859-1", $data));
欢迎来到这个网站!有关此处主题的更多信息,请查看。你可能会更幸运地在网站上提问。这是标记为Perl的,所以我猜你在使用DBI?显示错误代码,因为它应该像读取输入文件时更改编码一样简单。另外,您使用的是什么数据库服务器?我使用的是sqlplus和perl代码,而不是DBI模块,因为它不仅仅是插入、更新,还有过程、触发器和视图。不,您可以看到编码Notepad++是在猜测。要知道文件使用的是哪种编码,您必须询问编写它的人。这仍然是有用的建议,因为可以使用Notepad++来更改它。除非它猜错了,否则这在大多数情况下都是可行的。但这总比猜测好,我正在尝试使用perl、sqlplus自动化FB部署。我们不希望DB团队告诉我们他们使用的是什么字符集。工作流是WINDOWS->SCM->Linux->DBI尝试在Linux中同时使用iconv和recode命令,但这两个命令并没有解决我的问题。因为我需要确定源代码。顺便说一句,我正在尝试使用perl、sqlplus自动化DB部署。正如其他人提到的,最好确定知道源代码编码,因为自动检测是不完善的。然而,有一些实用程序和库试图做到这一点:尝试查看chardet,我相信有各种库和端口。