WINDOWS到Linux的字符集问题

时间:2017-02-02 15:55:32

标签: sql linux perl

我有不同的SQL文件集,其中包含法语/西班牙语和其他语言字符。在Windows中,我们能够看到特定的语言字符,当它转移到Linux时,我会看到奇怪的字符。

我理解Windows使用不同的字符集,如WINDOWS-1252,WINDOWS-1258和iso-8859-1。

我们如何在Linux中更改类似于Windows的charset,以便在从Linux触发查询时不会在DB中插入奇怪的字符?

提前致谢。

3 个答案:

答案 0 :(得分:1)

如果我正确理解了问题,您可以使用包含非ASCII字符的各种Windows编码生成SQL脚本。您想在Linux上执行这些脚本。

我认为您希望无损地将文件转换为您的Linux SQL解析器可以处理的内容,可能是unicode UTF-8。这种转换可以用iconv完成(命令行实用程序,我相信也有库)。

然而,一个挑战是你是否知道每个文件的原始编码是什么,因为这不一定能自动检测到......如果你能让脚本文件的作者为脚本提供指定的编码,那可能会更好。

答案 1 :(得分:0)

  

在Windows中,我们可以看到特定的语言字符

您可以在记事本++中打开它,看看文件正在使用什么编码,您也可以将其转换为UTF-8。

答案 2 :(得分:0)

您需要使用Encodeutf8个模块。 通常,对于SQL或MySQL,您将DB编码设置为您喜欢使用的编码。现在大多数人将它设置为UTF-8以支持大量字符集。

但在这种情况下,您可以使用编码来匹配所需的编码,这可能有用。

use Encode qw(decode encode); 
$data = encode("utf8", decode("iso-8859-1", $data));