找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 40915|回复: 11

[文件操作] 批处理如何实现ANSI编码转化为UTF-8无BOM编码?

[复制链接]
发表于 2010-12-11 23:05:14 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-11-15 17:01 编辑

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

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

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

我需要的是命令行!
发表于 2010-12-11 23:23:43 | 显示全部楼层
 楼主| 发表于 2010-12-12 00:17:10 | 显示全部楼层
有没有cmd的语句?我要使用cmd批处理完成。
 楼主| 发表于 2010-12-13 21:10:49 | 显示全部楼层
大家来帮帮忙啊!看看谁会
发表于 2010-12-14 03:08:52 | 显示全部楼层

回复 3楼 的帖子

为什么不能用VBS呢?
 楼主| 发表于 2010-12-14 21:10:22 | 显示全部楼层
用VBS如何实现??
发表于 2010-12-14 23:18:52 | 显示全部楼层
什么是VBS?汗。。。
2楼的链接你看了吗?
 楼主| 发表于 2010-12-15 21:06:52 | 显示全部楼层
可是不能转化为无BOM的UTF-8啊!而且还需要手动拖拽
发表于 2010-12-22 21:45:36 | 显示全部楼层
本帖最后由 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
复制代码
发表于 2010-12-22 22:58:49 | 显示全部楼层
以前有位朋友说他的用一个软件生成了一些无BOM的UTF8文件,不知道用的啥软件。
http://bbs.bathome.net/thread-8299-1-1.html
发表于 2010-12-24 00:24:41 | 显示全部楼层
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
复制代码

评分

参与人数 1技术 +1 收起 理由
powerbat + 1 ADO操作非常灵活

查看全部评分

发表于 2010-12-24 23:41:42 | 显示全部楼层
伟大的VBS又立功了!不要给其他软件任何机会!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 15:01 , Processed in 0.020552 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表