Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql WINDOWS到Linux字符集问题_Sql_Linux_Perl - Fatal编程技术网

Sql WINDOWS到Linux字符集问题

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中,我们可以看到特定的语言字符 您可以在记事本++中打开它,查看文件使用的编码,还可以将其

我有一组不同的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,我相信有各种库和端口。