[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 CrLf 于 2014-7-27 20:01 编辑

GB2312 编码是不支持韩文的,强行从 unicode 转为 扩展ASCII码 极易会丢失字符
949 代码页不知道为什么又没法用,1201 无效果,65001 在 xp 下又有问题
---------------------------------------------------------------------------------
powershell 默认输出就是 unicode:
  1. ((select-string "DIAMONDS=" a.inf).line -split '"')[1]>b.inf
复制代码
perl 也可实现,非系统自带:
  1. use Encode;
  2. open(IN,"<:encoding(utf-16)","a.inf");
  3. open(OUT,">b.inf");
  4. binmode(OUT, ":encoding(utf-16)");
  5. while(<IN>){
  6. print OUT ((split /"/)[1]) if /^DIAMONDS=/;
  7. }
复制代码
再来个 python...
  1. import codecs
  2. import re
  3. text =open('a.inf', encoding='utf-16').read()
  4. text=re.sub(r'[\s\S]*DIAMONDS="(.*)"[\s\S]*','\g<1>',text)
  5. open('b.inf', 'w', encoding='utf-16').write(text)
复制代码

TOP

问题是:如何原样提取 Unicode 格式文件中的字符串,并且又原样写入到一个 Unicode 格式文件中。
我想肯定是有办法的,只是我不懂罢了,所以请老师们出手,谢谢了!!!
76626yyn

TOP

这个问题似乎有点难,既要正确的原样查找 Unicode 格式文件中的字符串(通常用 for /f %%i in () 到的已经是乱码了),又要写入到一个 Unicode 格式文件中。
个人观点:就目前的方法,采用普通的的文本,如 .txt、 .ini、 .bat好像都无法处理 Unicode 格式,那么我想,新写入的文件格式只能是注册表文件(.reg---保存为 unicode 格式应该可以运行),将变量以 .reg 的形式保存,用bat批处理导入这个 .reg 文件(反正我最终要的结果是注册表)。
76626yyn

TOP

本帖最后由 yuanyannian 于 2014-7-26 22:24 编辑

回复 4# DAIC


    源文件已经上传到顶楼(附件),其实这是 Windows 安装源盘中注册表源文件,因为所涵盖所有国家的语言,所以是变量,不同的语言,等号后面的内容不一样的,但都是 unicode 编码字符。
76626yyn

TOP

回复 3# yuanyannian


    把你的inf文件压缩之后上传到顶楼我试试

TOP

回复 2# terse


    谢谢,不过好像不行,运行后显示:
76626yyn

TOP

回复 1# yuanyannian
  1. @echo off
  2. for /f "tokens=2 delims==" %%i in ('find /i "DIAMONDS=" ^<au.txt') do set "str=%%~i"
  3. echo,%str%
  4. pause
复制代码

TOP

返回列表