标题: [文本处理] [已解决]有办法实现用批处理转换txt文本的编码为指定国家或地区的编码吗? [打印本页]
作者: 867258173 时间: 2015-7-10 00:12 标题: [已解决]有办法实现用批处理转换txt文本的编码为指定国家或地区的编码吗?
本帖最后由 pcl_test 于 2016-9-14 19:20 编辑
比如我们当前使用的txt格式默认是
简体中文:GB2312
而我想在繁体或日文其它国家内码编辑并打开:
繁体中文:Big5
日语:shift-jis
若直接打开其他国家默认格式文档,就会提示乱码。是否能切换打开?
PS:编辑器就别说了。最多只能转TXT格式,却无法转内容格式?
另外能调用转码工具的参数来实现bat转区打开吗?复制代码
这是两款最受欢迎的转区工具,理论能调用这两款软件参数来实现。希望大家都来测试下。
举个列子:
这是在当前中文系统txt编辑内容:
简体中文:GB2312复制代码
这是在转日区显示:
日语:shift-jis复制代码
这是在繁体(台湾)显示:
繁体中文:Big5复制代码
倒过来编辑也是一样,也就是不同国家TXT默认编码不同?无法在本地国家直接打开其他地区TXT编码。如今需要就是能够互换这些不同国家编码的TXT?方便查看和编辑......
希望大家共同来思考如何实现这个功能.....
作者: Demon 时间: 2015-7-10 09:36
记事本:怪我咯?
作者: 9zhmke 时间: 2015-7-10 20:12
繁体可以转码,汉字转成英文或其他国家语言只能用翻译软件?
要通用性强还是用UTF8吧
作者: CrLf 时间: 2015-7-10 22:21
问题是你怎么识别?这些编码很多都没有文件头
作者: CrLf 时间: 2015-7-11 01:37
本帖最后由 CrLf 于 2015-7-11 01:44 编辑
运行后选择文件和编码时自动转码,对有文件头的文件强制按文件头读取- <!-- :
- @start mshta "%~f0" & exit /b
- -->
- <script src=http://www.bathome.net/lib/diy/Libs.js></script>
- <script>
- var libs = ['Prototype','WSH','Function','DIYprototype','iconv','list']
- for(var i in libs)Libs.get(libs[i])
- </script>
-
- <input type="file" id=filePath onchange=typefile() style="width:700px;float:left" />
- <select id=charSet onchange=typefile() style="float:right"></select>
- <br /><br />
- <textarea id=textarea style="width:100%;height:90%" ></textarea>
-
- <script>
- var charsetList = list.charset()
-
- charsetList._each(function(e){
- var o = new Option(e,e)
- charSet.add(o)
- if(e=='gb2312')o.selected = true
- })
-
- function typefile(){
- var bin = iconv.load(filePath.value)
- charset = iconv.checkBom(bin) ? charSet.options[charSet.selectedIndex].value : iconv.checkBom(bin)
- textarea.value = iconv.toStr(bin,charset)
- }
- </script>
复制代码
作者: 867258173 时间: 2015-7-11 10:03
回复 5# CrLf
谢谢。这个能直接选择查看,不能在选单添加国家名吗?这样使用起来方便些。
作者: 867258173 时间: 2015-7-11 10:18
回复 2# Demon
_(:зゝ∠)_ 记事本确实不方便,每次转编码编辑,保存。都会提示错误。复制代码
再打开变成这样。
回复 3# Demon
UTF-8确实通用,但其他国家,包括我们难道还每次用TXT编辑文本,还要再次转UTF-8再保存,估计没多少人这么做。因为这样太麻烦,花时间。所以其他国家编辑TXT多数和我们一样,使用地区默认编码来编辑。
回复 4# Demon - @echo off
- echo 转日文:shift-jis
- "E:\Locale.Emulator.1.4.1.0\LEProc.exe" "E:\测试.txt" "C932" "L1041" "T-540"
- echo 转繁体中文:Big5
- "E:\Locale.Emulator.1.4.1.0\LEProc.exe" "E:\测试.txt" "C949" "C950" "L1028" "T-480"
复制代码
自己通过Locale.Emulator转区软件调用参数,使用批处理做了个能实现互转国家编码功能,不过每次都得手动编辑TXT路径。还有转其他国家,日语,繁体后。再使用TXT保存,就会提示错误。下次再转编码打开。就会变成???。
OTL 这个和你上面的都只能查看,不能编辑。不,这个能编辑,但TXT默认编码有的文字不支持。导致在别的国家编码保存导致失败。而转区软件必须是本地TXT编码才能转换,改成其他编码再调用转换,参数就失效了。
不知你能不能看看是否能做个不只能查看且能编辑保存的bat呢?
作者: CrLf 时间: 2015-7-11 18:02
本帖最后由 CrLf 于 2015-7-12 04:31 编辑
回复 7# 867258173
ctrl+s 将结果以指定编码保存到原文件,更多语言在注释处自己加,界面不好看请自行改良:- <!-- :
- @start mshta "%~f0" & exit /b
- -->
- <script src=http://www.bathome.net/lib/diy/Libs.js></script>
- <script>
- var libs = ['Prototype','WSH','Function','iconv']
- for(var i in libs)Libs.get(libs[i])
- </script>
-
- <input type="file" id=filePath onchange=typefile() style="width:700px;float:left" />
- 原编码:<select id=charSetIn onchange=typefile()></select>
- 新编码:<select id=charSetOut onchange=savefile()></select>
- <br /><br />
- <textarea id=textarea style="width:100%;height:90%" ></textarea>
-
- <script>
- var list = [
- {text:'简体中文',value:'gb2312'},
- {text:'繁体中文',value:'big5'},
- {text:'日语',value:'shift-jis'},
- {text:'utf-8',value:'utf-8'},
- {text:'unicode',value:'utf-7'}
- //依此类推,要什么自己加
- ]
-
- list._each(
- function(o){
- charSetIn.add(new Option(o.text,o.value)),charSetOut.add(new Option(o.text,o.value))
- }
- )
-
- document.onkeydown = function(e){
- if(event.ctrlKey&&event.keyCode==83)savefile()
- }
-
- function typefile(){
- document.title = filePath.value + ' *'
- var bin = iconv.load(filePath.value)
- charset = iconv.checkBom(bin) ? charSetIn.options[charSetIn.selectedIndex].value : iconv.checkBom(bin)
- textarea.value = iconv.toStr(bin,charset)
- }
-
- function savefile(){
- if(/\*$/.test(document.title)){
- var fso = newcom('Scripting.FileSystemObject')
- var tmpFile = fso.GetTempName()
-
- iconv.saveText(
- textarea.value,
- tmpFile,
- charSetOut.options[charSetOut.selectedIndex].value
- )
-
- fso.CopyFile(tmpFile,filePath.value,true)
- fso.DeleteFile(tmpFile,true)
-
- document.title = filePath.value
- }
- }
- </script>
复制代码
妈了个鸡,试了一下午才明白 adodb.stream 出错的原因是不能写入被 input file 选中的文件,ado 真差劲
作者: 867258173 时间: 2015-7-12 00:05
本帖最后由 867258173 于 2015-7-12 00:10 编辑
回复 8# CrLf
今日辛苦了,代码这样就行了,剩下其他语言编码我自己添加就好
作者: CrLf 时间: 2015-7-12 16:29
回复 10# tigerpower
--> 之后加一句复制代码
或存为 utf-8 编码的 hta 文件运行
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |