免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5076 | 回复: 10
打印 上一主题 下一主题

perl处理excel中的法文等欧美国家语言的时候写入到txt中是问号! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-01 13:55 |只看该作者 |倒序浏览
20可用积分
大家帮忙看看这个问题:
perl处理excel中的法文等欧美国家语言的时候写入到txt中是问号!

我用perl脚本读取指定excel中的某些字段,然后写入到txt中,相对中文和英文来说都没有问题,但是针对泰文和法文就会有不识别的文字!txt中要么是问号要么就是空格!
请达人们给予启示!谢谢!



  1. #printf qq(please input the language\n);
  2. #$yy = <STDIN>;
  3. #perl cdma_utf8.pl Chinese strings_Test.xls chinese.brx
  4. #2008=0928use map to control language
  5. use Win32::OLE qw(in with);
  6. use Win32::OLE::Const 'Microsoft Excel';
  7. use utf8;
  8. use Unicode::UCD 'charinfo';
  9. use Encode qw(encode from_to _utf8_off);
  10. $Win32::OLE::Warn = 3;
  11. $yy = $ARGV[0];
  12. chomp $yy;
  13. $cvs = $ARGV[1];
  14. $brx =$ARGV[2];
  15. chomp $cvs;
  16. chomp $brx;
  17. printf "$cvs \n";
  18. printf "$yy \n";
  19. printf "$brx \n";
  20. if($yy eq "h"){
  21.         printf qq(cdma language infile outfile\n);
  22.         exit;
  23.         }
  24. $Excel = Win32::OLE->GetActiveObject('Excel.Application')|| Win32::OLE->new('Excel.Application', 'Quit');
  25. #$Book = $Excel->Workbooks->Open("$cvs");  
  26. $Book=$Excel->Workbooks->Open("$cvs");  
  27. $Sheet = $Book->Worksheets(1);
  28. $col="1";
  29. while($col < 20){
  30.         $shuju = $Sheet->Cells(1,$col)->{'Value'};
  31.         if($shuju eq "$yy"){
  32.                 $colnum = "$col";
  33.                 last;
  34.                 }
  35.         else{
  36.                 $col++;
  37.                 }

  38. }

  39. system qq(del /q $brx);
  40. open (H,">$brx");
  41. close H;
  42. $title = qq(\<\?xml version="1.0" encoding="utf-8"\?\>\n);
  43. $title1=qq(\<BREWRes Name="$yy" VERSION="1"\>\n);
  44. $title2=qq(\<Strings Encoding=\"Unicode\"\>\n);
  45. open (H,">>$brx");
  46. print H "$title";
  47. print H "$title1";
  48. print H "$title2";
  49. close H;
  50. #open(CVS,"$cvs");
  51. $id = "1001";
  52. $lie = "2";
  53.         while($lie < 1471){
  54.         #while($lie < 3){
  55.                 $guding = $Sheet->Cells($lie,2)->{'Value'};
  56.         $huoqu =$Sheet->Cells($lie,$col)->{'Value'};
  57.                         $huoqu =~s/&/&amp;/;
  58.                         $huoqu =~s/</&lt;/;
  59.                 $huoqu =~s/>/&gt;/;
  60. #                if($yy eq Chinese){
  61. #                        $huoqu =encode('gb2312',$huoqu);
  62. #                }
  63. #                else{       

  64.                 #$huoqu1 =$huoqu;
  65.                 $huoqu2=Encode::decode('gb2312',$huoqu);
  66.                 #printf "$huoqu \n";
  67.                 #$huoqu3 =Encode::encode_utf8($huoqu2);
  68.                
  69. #        }       
  70.                 $neirong = qq(\<String Id="$id" Name="$guding"\>\n);
  71.                 #$neirong1 = qq(     \<Text\>$huoqu1\</Text\>\n);
  72.                         $neirong2 = qq(     \<Text\>$huoqu2\</Text\>\n);
  73.                                 #$neirong3 = qq(     \<Text\>$huoqu3\</Text\>\n);
  74.                 $neirong3 = qq(        \</String\>\n);
  75.                 open (H,">>$brx");
  76. print H "$neirong";
  77. #print H "$neirong1";
  78. print H "$neirong2";
  79. print H "$neirong3";
  80. close H;
  81.                 ++$lie;
  82.                 $id++;
  83.         }
  84.         $final=qq(\</Strings\>\n);
  85.   $final1=qq(        \</BREWRes\>\n);
  86.                         open (H,">>$brx");
  87. print H "$final";
  88. print H "$final1";
  89. close H;
  90. $Book->Close;
  91. #$Book->Quit();
  92.         exit;
  93.        





复制代码

论坛徽章:
0
2 [报告]
发表于 2008-12-01 14:01 |只看该作者
用UTF编码了马?

论坛徽章:
0
3 [报告]
发表于 2008-12-01 14:14 |只看该作者
用了!

论坛徽章:
0
4 [报告]
发表于 2008-12-01 14:25 |只看该作者
你的环境 支持UTF字符集吗?

论坛徽章:
0
5 [报告]
发表于 2008-12-01 14:35 |只看该作者
支持!用txt直接建立unicode的文档copyexcel的东西没有问题的!

论坛徽章:
0
6 [报告]
发表于 2008-12-01 14:41 |只看该作者
日文和亚洲 UTF-8 语言环境不支持 CTL (4300239)

en_US.UTF-8 和欧洲 UTF-8 语言环境已经实现了用于输入希伯来文、阿拉伯文和泰文的复杂文本语言 (CTL) 支持,但 ja_JP.UTF-8、ko.UTF-8(又称为 ko_KR.UTF-8)、zh.UTF-8(又称为 zh_CH.UTF-8)和 zh_TW.UTF-8 等语言环境不支持 CTL。

http://docs.sun.com/app/docs/doc ... 26t?l=zh&a=view

论坛徽章:
0
7 [报告]
发表于 2008-12-01 14:50 |只看该作者

回复 #6 ziggler 的帖子

但是txt中已经可以看到正常的法文,
而且excel中也可以看到!
用ibm的范例脚本也可以输出法文,
但用perl读入excel就会有问题!
有没有达人处理过这样的问题的?

论坛徽章:
0
8 [报告]
发表于 2008-12-01 15:03 |只看该作者
原帖由 liu6545 于 2008-12-1 14:50 发表
但是txt中已经可以看到正常的法文,
而且excel中也可以看到!
用ibm的范例脚本也可以输出法文,
但用perl读入excel就会有问题!
有没有达人处理过这样的问题的?


看看有用吗?

功能丰富的 Perl: Perl 增强了对 Unicode 的支持

学习如何使用 Perl 5.8.6 中的 Unicode 特性
        developerWorks
       

               

样例代码

级别: 初级

Teodor Zlatanov (tzz@bu.edu), 程序员, Northern Light, Inc.

2005 年 11 月 07 日

    尽管到 Perl 6 中才宣称完全支持 Unicode,但是在 Perl 5.8.6 中内嵌的对 Unicode 的支持已经足以开始编写本地化的应用程序了。Ted 使用自己所钟爱的编辑器 Yudit,介绍了 Perl 如何读取、解释和处理 UTF-8 编码的 Unicode。

从 5.6.0 版本发布以来,Perl 已经发生了极大的变化。Perl 6 项目是在一个名为 Parrot 的解释器(它内嵌了对 UTF-8 和很多其他与 Unicode 有关的特性的支持)的基础上构建和运行的(我知道这种说法太过简单,但是本文后面马上要介绍的内容可以确保您并不需要担心这些细节)。因此,Perl 6 从一开始就非常重视对 Unicode 的支持。(所以,在 Perl 6 发布时我还会撰写另外一篇有关 Perl 6 的 Unicode 文章。我当然希望这很快就可以实现。到时候我就不会只是这么简单地提一下就算完了!)

在撰写本文时,我参考的是 5.8.6 版本,但是目前最新版本是 5.8.7。我并没有对 CPAN 的任何 Unicode 模块进行测试 —— 尽管这些模块的确存在,而且也可以很好地工作 —— 因为我们在本文中重点讨论的是 Perl 中内嵌的对 Unicode 的支持特性。因此,我所测试的目标是 Perl 的 Unicode(UTF-8 编码)的读取、解释和处理能力。在本文中我也并没有讨论 Unicode、UCS 和 UTF-8 编码的内容 —— 在 参考资料 中可以找到介绍这个主题的丰富资源。

我喜欢使用 Yudit 编辑器和 rxvt(Unicode 版本)的终端来进行有关 Unicode 的工作。(我一直在使用 rxvt,而不是 xterm;它们都可以很好地处理一些简单的事情,但是从我的观点来看,rxvt 要更好些,因为它可以使用多种字体来显示不同的字符集。)

http://www.ibm.com/developerworks/cn/linux/l-cpunicode/

论坛徽章:
0
9 [报告]
发表于 2008-12-01 15:37 |只看该作者

回复 #8 ziggler 的帖子

我参考的就是ibm的这个帖子!
但我写的读取excel的代码你看了吗?
写入到txt中就是不行!

论坛徽章:
0
10 [报告]
发表于 2008-12-01 17:21 |只看该作者
自己顶!期待答案!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP