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

[文本处理] 批处理for /f不支持UTF-8编码怎么办?

如题。有什么变通的办法吗?

要求不要使用第三方工具,不能转换文本文件编码到ansi。

先type或more
***共同提高***

TOP

2# batman

type和more均无效。

测试代码
  1. @echo off
  2. SETLOCAL EnablEdElayEdExpansion
  3. ( for /f "skip=8 tokens=3,4 delims=<>" %%a in ('more plugin.txt') do (
  4. set "n=%%b                "
  5. set n=!n:~1,15!
  6. echo !n! %%a
  7. ))>1.txt
  8. start /max 1.txt
  9. pause
复制代码

TOP

碰到UTF-8的文件
应用要求不高的直接以乱对乱
直接以UTF-8在ANSI下的乱码形式进行处理
应用要求较高一般先转换编码再处理

cmd处理UTF-8的能力较弱
可以使用chcp 65001转换代码页
并改换cmd窗口字体为Lucida Console后
可以type文件显示正常
但是无法用for/f进行文本分析
天的白色影子

TOP

2# batman

type和more均无效。

测试代码@echo off
SETLOCAL EnablEdElayEdExpansion
( for /f "skip=8 tokens=3,4 delims=" %%a in ('more plugin.txt') do (
set "n=%%b                "
set n=!n:~1, ...
applba 发表于 2011-5-25 02:45


set "n=%%b
这里的b是在上下文的什么地方呢?

TOP

3# applba

type和more对UNICODE起作用,但是UTF-8就不得而知了
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

set "n=%%b
这里的b是在上下文的什么地方呢?
fengyun530 发表于 2011-5-25 09:24

倒,哥们看来你的FOR比我还水呀,哈哈.建议你看看论坛的FOR教程.

他上文不是有个tokens=3,4嘛,第三节是%%a,第四节就是%%b了.

TOP

4# qzwqzw


倒……
unicode包含ucs-2 big edition和little editon
utf-8又分为又bom和无bom格式……


看来还是python有搞头,慢慢啃python mannual

TOP

要是解决不了,就推荐个第三方软件吧,要是能解决就说具体一点的解决办法,我也等着用呢

TOP

  1. @echo off
  2. SETLOCAL EnablEdElayEdExpansion
  3. chcp 65001
  4. (for /f "skip=8 tokens=3,4 delims=<>" %%a in (plugin.txt) do (
  5. set "n=%%b                "
  6. set n=!n:~1,15!
  7. echo !n! %%a
  8. ))>1.txt
  9. start /max 1.txt
  10. pause
复制代码
Microsoft Windows 7 Ultimate Service Pack 1

TOP

XP下CMD有BUG,chcp 65001会导致错误,就上面的文本而言可以这么处理。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. chcp 437 > nul
  4. (for /f "skip=8 tokens=3,4 delims=<>" %%a in (plugin.txt) do (
  5.     set "b=%%b"
  6.     echo !b:~1! %%a
  7. )) > 1.txt
  8. pause
复制代码

TOP

此题无解~~~~~~~~~~~~

TOP

此题无解~~~~~~~~~~~~
狗屁不通 发表于 2012-8-19 19:23



    11楼的不是可以吗???????

TOP

返回列表