转义符(/)带来的问题(Perl+mySQL).

来源:互联网 发布:短信推广软件 编辑:程序博客网 时间:2024/05/01 11:19

       众所周之,"/"在大多数语言中都用来作为转义符(至少我接触到的语言都是这样的,不知道有没有其它语言不是用"/"作转义符的^_^),而最近在使用Perl连MySQL数据库做网页开发时,碰到了这样一些问题.

       1.在MySQL数据库中,对于"/"的转换,在插入、更新数据和在查询时是不一样的,在插入和更新数据时我们只需要把一个”/"转成两个就可以了,而在做查询时需要把一个“/“转成四个。在Perl中我们可以这样写:

       $strRet =~ s/////////g;
       $strRet =~ s/////////////g;  

      2.第二个问题是Perl语言对“/”的转换和日本语文字带来的问题。
         “/“在ASCII表中16进制为5C。在日本语文字中有以下一些字带有5C,
         

ソЫ噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭

        本来这还没有什么,不过一到Perl中,问题就来了,在Perl中使用(~ s/////////g)或(~ s/////////////g )进行转换时是按字节进行转换的,那么不就是以上包含“5C”的汉字都被转换了吗?这可不是我们想要的结果。我采用了一种很苯拙的解决方法,先把“/“转换,在把这四十个汉字后多余的”/“去掉。如:
            $strRet =~ s/////////////g;
            $strRet =~ s/―/////////―//g;
        在http://www.shtml.jp/mojibake/sjis_cgi.html给了我们很多解决方法,不过是日文的。

原创粉丝点击