Board logo

标题: [文件操作] 批处理如何实现ANSI编码转化为UTF-8无BOM编码? [打印本页]

作者: alpha    时间: 2010-12-11 23:05     标题: 批处理如何实现ANSI编码转化为UTF-8无BOM编码?

本帖最后由 pcl_test 于 2016-11-15 17:01 编辑

我有一个记事本文件,现在的编码是ASCII的,运用什么命令,能够使其转化为UTF-8无BOM的编码?

如果实在不行的话,可以借助第三方的命令型工具。

请不要说Notpad手动转换为UTF-8无BOM的编码!

我需要的是命令行!
作者: hanyeguxing    时间: 2010-12-11 23:23

http://www.cn-dos.net/forum/view ... =%E7%BC%96%E7%A0%81
作者: alpha    时间: 2010-12-12 00:17

有没有cmd的语句?我要使用cmd批处理完成。
作者: alpha    时间: 2010-12-13 21:10

大家来帮帮忙啊!看看谁会
作者: Batcher    时间: 2010-12-14 03:08     标题: 回复 3楼 的帖子

为什么不能用VBS呢?
作者: alpha    时间: 2010-12-14 21:10

用VBS如何实现??
作者: powerbat    时间: 2010-12-14 23:18

什么是VBS?汗。。。
2楼的链接你看了吗?
作者: alpha    时间: 2010-12-15 21:06

可是不能转化为无BOM的UTF-8啊!而且还需要手动拖拽
作者: SunTB    时间: 2010-12-22 21:45

本帖最后由 pcl_test 于 2018-4-12 15:00 编辑
  1. @echo off
  2. set "file=D:\test.txt"
  3. powershell ^
  4.     $txt = gc -LiteralPath '%file%';^
  5.     $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False;^
  6.     [System.IO.File]::WriteAllLines('%file%', $txt, $Utf8NoBomEncoding);
  7. pause
复制代码

作者: Batcher    时间: 2010-12-22 22:58

以前有位朋友说他的用一个软件生成了一些无BOM的UTF8文件,不知道用的啥软件。
http://bbs.bathome.net/thread-8299-1-1.html
作者: zqz0012005    时间: 2010-12-24 00:24

VBS完全能够搞定啊,干吗还要麻烦别的软件?
把编码格式转换函数稍微改进一下即可。(这个函数如果你们没见过,那可能是我以前自己写的)
  1. Const adTypeBinary = 1
  2. Const adTypeText = 2
  3. Const adSaveCreateOverWrite = 2
  4. ConvCharSet "C:\boot.ini", "gbk", "utf-8"
  5. Function ConvCharSet(sFileName, srcCharSet, dstCharSet)
  6.     Dim ADOStrm
  7.     Dim text
  8.     Dim binData
  9.     Set ADOStrm = CreateObject("ADODB.Stream")
  10.     ADOStrm.CharSet = srcCharSet
  11.     ADOStrm.Type = adTypeText
  12.     ADOStrm.Open
  13.     ADOStrm.LoadFromFile sFileName
  14.     text = ADOStrm.ReadText(-1)
  15.     ADOStrm.Position = 0
  16.     ADOStrm.CharSet = dstCharSet
  17.     ADOStrm.WriteText text
  18.     ADOStrm.SetEOS
  19.   if 1 then
  20.     ADOStrm.Position = 0
  21.     ADOStrm.Type = adTypeBinary
  22.     ADOStrm.Position = 3
  23.     binData = ADOStrm.Read(-1)
  24.     ADOStrm.Position = 0
  25.     ADOStrm.Write binData
  26.     ADOStrm.SetEOS
  27.   end if
  28.     ADOStrm.SaveToFile sFileName & "_" & dstCharSet, adSaveCreateOverWrite
  29.     ADOStrm.Close
  30.     Set ADOStrm = Nothing
  31. ConvCharSet = text
  32. End Function
复制代码

作者: powerbat    时间: 2010-12-24 23:41

伟大的VBS又立功了!不要给其他软件任何机会!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2