我用Perl中的字符替换literal \ xNN?

时间:2009-09-02 06:51:10

标签: perl character-encoding

我有一个Perl脚本,它从MySQL表中获取文本值并将其写入文本文件。问题是,当我打开文本文件进行查看时,我会得到很多十六进制字符,例如\x92\x93,它代表单引号和双引号,我猜。

我在将值写入文本文件之前使用DBI->quote函数来转义特殊字符。我尝试过使用Encode :: Encoder,但没有运气。两个表上的字符集都是latin1

如何摆脱这些十六进制字符并让字符显示在文本文件中?

3 个答案:

答案 0 :(得分:5)

ISO Latin-1未定义0x80到0x9f范围内的字符,因此需要以十六进制显示这些字节。很可能您的数据实际上是以Windows-1252编码的,这与Latin1相同,只是它定义了此范围内的其他字符(包括左/右引号)。

答案 1 :(得分:1)

\ x92和\ x93是latin1字符集中的空字符(请参阅herehere)。 如果

答案 2 :(得分:0)

听起来你需要更改表格上的字符集,或者将非latin-1字符翻译成latin-1等价物。我更喜欢第一种解决方案。习惯了Unicode;你将不得不在某个时候学习它。 :)