批处理之家's Archiver

plp626 发表于 2011-5-17 20:15

扩展ASCII码字符集0x00~0xff 批处理获取函数

[quote]问题描述:
特殊字符有其特殊用途,像制表符,退格符,响铃,回车,换行,文件结束符;
但其赋值需要特殊方法;另外,在坛友跟帖,贴出代码时又有不少字符被论坛直接过滤
比如:制表符(0x09),回车符(0x0d),换行符(0x0a),vt符(0x0b),ff符(0c),欧元符(0x80),还有那个和unicode文件头有关的0xff字符,另外文件结束符(0x1a)不能直接在bat源代码中赋值,要用特殊方法;
这些问题批处理自身会如何解决?[/quote]----------------------------------------------------------------------------
原帖给出了字符集获取的背景和思路;因为叙述比较繁琐,考虑到大家阅读方便,现在打包;看重思路的坛友可在此下载原帖备份文件;
[attach]4786[/attach]
这里直接给出问题的解决方案:
[code]@echo off||code by plp&title ascii 0x01~0xff 对照表
setlocal enabledelayedexpansion
2>nul call ascmap /437  $ ||call:getasc $
echo.
set p=&set lf=!$:~0x0A,1!
set hx=0 1 2 3 4 5 6 7 8 9 A B C D E F
for %%a in (%hx%)do for %%b in (%hx%)do set "$%%a%%b=!$:~0x%%a%%b,1!!$:~9,1!"
for %%a in (
"00=<NUL>" "07=<BEL>" "08=<BS>" "09=<TAB>" "0A=<LF>" "0D=<CR>" "20=<SP>"
)do set "$%%~a!$:~9,1!"

for %%a in (a b c d)do set "p=!p!^!d%%a^! 0x%%%%a%%z ^!$%%%%a%%z^!!$B3:~,1! "
for /f "tokens=1-4" %%a in ("0 2 4 6!lf!1 3 5 7!lf!8 A C E!lf!9 B D F")do (
    (if %%a==8 echo.)&for %%z in (%hx%)do (
        set/a da=0x%%a%%z,db=0x%%b%%z,dc=0x%%c%%z,dd=0x%%d%%z
        for %%a in (a b c d)do set d%%a=  !d%%a!&set d%%a=!d%%a:~-3!
        echo  %p:~0,-2%
    )
)
if "%~0"=="%~f0" set/p=
goto:eof

:getasc <$|#|@|_|{|}|[|]> // 将0x01~0xff255个字符存放在%1变量内
chcp 936>nul
set %1gbk=币市布弄清分标圈唉上下同名后小成民怒易笔耕化吗战则刚猛夜思舞鸟简闹出读导能图绿
chcp 437>nul
Set %1=&cmd /u/c echo !%1gbk!>%tmp%\%1gbk.tmp&set/p %1gbk=<%tmp%\%1gbk.tmp
for /l %%a in (0,2,76)do Set %1=!%1!!%1gbk:~%%a,1!
set %1= !%1:~,31! ^^!"#$%%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^^_`abcdefghijklmnopqrstuvwxyz{|}~!%1:~-8,1!亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬!%1:~-7!
[/code]

然后是0x00字符的获取:
[code]
:: 获取ascii 0x00 字符
cmd /u/cecho.>$.tmp
findstr/vrc:$ $.tmp>0x00.txt[/code]

上面两个代码,说明批处理内部命令+chcp+findstr(这两个外部命令基本保险)实现了所有ascii字符的处理和存储;
这为批处理内部命令对字符的处理大大拓宽道路,使得批处理更“独立”,也使娱乐批处理更上一层楼
为了减少临时文件的生产和减少外部命令chcp,findstr的使用,从而提升代码执行效率,
本贴为此特定制了ascmap函数:
[color=SandyBrown]下载ascmap.cmd(ver 1.01.02):[/color] [attach]4295[/attach]
1.2版本更新说明:兼容 在未开启变量延迟的情形下对ascmap.cmd的调用

[b][color=red]下载ascmap.cmd(ver 1.2):[/color][/b] [attach]5066[/attach]

游客身份不能下载的,使用下面代码双击生成精简版 ascmap.cmd:
[code]@echo off||生产ascmap.cmd 1.2
setlocal enabledelayedexpansion&chcp 936>nul
:: 生产首行ascii表
set gbk=币市布弄清分标圈唉上下同名后小成民怒易笔耕化吗战则刚猛夜思舞鸟简闹出读导能图绿
chcp 437>nul&cmd /u/c echo !gbk!>gbk.tmp
set/p gbk=<gbk.tmp
if exist ascmap.cmd del/f/a ascmap.cmd
Set s=&for /l %%a in (0,2,76)do Set s=!s!!gbk:~%%a,1!
set $= !s:~,31! ^^!"#$%%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^^_`abcdefghijklmnopqrstuvwxyz{|}~!s:~-8,1!亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬!s:~-7!
echo :!$:~1,9!^^^^!$:~10,16!^^^^!$:~26,1!!$:~27!>ascmap.cmd
for /f "delims=:" %%a in ('findstr/nb :@: %~s0')do more +%%a<%~s0>>ascmap.cmd
:: 添加NUL字符到文件尾部
cmd/u/cecho.>gbk.tmp
findstr/vrc:$ gbk.tmp>$00.tmp
copy/b ascmap.cmd+$00.tmp ascmap.cmd>nul
attrib +R ascmap.cmd
ECHO File ascmap.cmd is created.
del gbk.tmp $00.tmp
if "%~0"=="%~f0" pause
:@:
:: get ascmap; version 1.2 ; code by plp
:: 请在 http://www.bathome.net/viewthread.php?tid=12347 下载完整版本获取帮助信息

@for /f "delims=/" %%a in ("%~1")do @if /%%a.==%1. chcp %%a>nul&&shift/1||exit/b 1
@if %1. neq . (
   set/p %1=<"%~f0"
   if !!.==. (set %1= !%1:~1,9!!%1:~11,16!!%1:~28!) ELSE (
      setlocal enabledelayedexpansion&set tab=!%1:~9,1!
      for /f "tokens=1-3" %%a in ("!%1:~1,8!!%1:~12,15!!%1:~28!")do @(
         endlocal&set %1= %%a!%tab%^

%%b %%c
      )
   )
)
@if %2. neq . findstr/vrc:$ "%~f0" >"%~2"[/code]

在此将研究该问题得到的副产品罗列如下,
[b]不同代码页下字符个数的不同:[/b]
[code]
:: 依此原理可以:
:: 判断一个gbk编码下的字符串含有宽字符的个数
:: 求计算字符串的字节数(没有临时文件实用)
@ECHO off&chcp 437>nul
Set c12=你好
setlocal EnableDelayedExpansion
for /l %%a in (0 1 3)do Set #%%a=!c12:~%%a,1!
ECHO !c12! -^> !#0!!#3!!#2!!#1!>$.txt
start notepad $.txt[/code]
[b]常用特殊字符的较简洁内部命令通用获取方法:[/b]
[code]
:: 获取文件结束符0x1A
copy nul+nul sub.txt

:: 获取“退格符”, 变量b_b的值为:退格符空格退格符(0x08 0x20 0x08)
for /F %%a in ('"prompt $h&for %%b in (1) do rem"')do Set b_b=%%a

:: 脚本中获取回车符 0x0d
for /f %%a in ('copy/z %~s0 nul')do set $0d=%%a

:: 脚本中获取换行符 0x0a, ^字符后空两行;
set $0a=^

::脚本中获取换页符 0x0c,
for /f %%a in ('cls')do set $0c=%%a

:: 936(中文)代码页下 cmd/u法获取制表符 0x09 (0x01~0x1F皆可用此法获取)
for /f "delims=U" %%a in ('cmd/u/cecho 唉')do set $09=%%a

:: cmd/u法获取unicode文件头0xfffe(0x80后的字符要切换代码页)
chcp 936
Set gbk=绿图
chcp 437
for /f "tokens=1-2delims=~V" %%a in ('cmd/u/cecho %gbk%')do set Un=%%a%%b

:: 代码页切换法获取制表符
chcp 936
set $07=〇
chcp 437
set $07 >tab.txt[/code]
[b]XP 5.1.2600下"快速"获取01~1f的截取低位字节法[/b]
总共31个汉字,依次对应31个特殊字符 (注意,此法win7 失效):
[code]
:: 响铃符0x07 --> 标
:: 退格符0x08 --> 圈
:: 制表符0x09 --> 唉
:: 换行符0x0a --> 上
:: 回车符0x0d --> 名
:: 比如单行获取换行符:for %%a in (上:)do set $=%%~da&set $0a=!$:~,1!

@echo off&setlocal enabledelayedexpansion
for %%a in (
币 市 布, 弄 清 分 标 圈
唉, 上 下 同 名, 后 小 成
民 怒, 易 笔 耕 化 吗
战 则 刚 猛,夜 思 舞 鸟
)do set/a n+=1&for %%b in (%%a:)do echo %%a -!n!- %%~db
pause[/code]这里要说的是这个代码页切换法的获取制表符的原理,
[b]大多低位特殊字符对应的宽字符还未找到[/b]:(该问题待续。。)
[code]@ECHO OFF
TITLE 代码页切换法获取0X00~0X1F之间的控制字符(未完)
CHCP 936
Set $00=NUL{}
Set $01=SOH{}
Set $02=STX{}
Set $03=ETX{}
Set $04=EOT{}
Set $05=ENQ{}
Set $06=ACK{}
Set $07=BEL{}
Set $08=BS{}
Set $09=TAB{〇}
Set $0a=LF{}
Set $0b=VT{♂}
Set $0c=FF{♀}
Set $0d=CR{}
Set $0e=SO{}
Set $0f=SI{¤}
Set $10=dle{}
Set $11=DC1{}
Set $12=DC2{}
Set $13=DC3{}
Set $14=DC4{}
Set $15=NAK{§}
Set $16=SYN{}
Set $17=ETB{}
Set $18=CAN{↑}
Set $19=EM{↓}
Set $1A=SUB{→}
Set $1B=ESC{←}
Set $1C=FS{∟}
Set $1D=GS{}
Set $1E=RS{▲}
Set $1F=US{▼}
CHCP 437
Set $
set $>$.txt
start $.txt
Pause
[/code]

一些应用:
[url]http://www.bathome.net/thread-12314-1-1.html[/url]
[url]http://www.bathome.net/thread-12349-1-1.html[/url]
[url]http://www.bathome.net/thread-12762-1-2.html[/url]
0x00字符获取思路参考:[url]http://www.bathome.net/thread-12284-2-1.html[/url]

Thanks to:  寒夜孤星 CRLF  zqz   batman neorobin qzwqzw 。。。

batman 发表于 2011-5-17 22:03

技术的确令人叹为观止,实用性有待挖掘和提升。。。

wankoilz 发表于 2011-5-17 23:09

[i=s] 本帖最后由 wankoilz 于 2011-5-19 19:16 编辑 [/i]

不知道那些特殊符号楼主是如何处理的...佩服!
恶补了一下编码知识基本算是明白了...

plp626 发表于 2011-5-19 17:17

[i=s] 本帖最后由 plp626 于 2011-6-15 19:17 编辑 [/i]

[code]
::获取控制符的gbk2unicode方案
::以回车符为例演示如下(“名”--unicode编码为540d)
@ECHO off&setlocal EnableDelayedExpansion
for /f %%a in ('cmd/u/cecho 名')do set un=%%a
:: 获取回车符0x0D并存放在变量$0d中
Set $0d=!un:~0,1!
Set test=abcd!$0d!##
ECHO !test!
set test>$0d.txt
start $0d.txt
pause[/code][code]
::获取unicode文件头的gbk2unicode方案及其测试代码:
@ECHO off&setlocal EnableDelayedExpansion
Set gbk=绿图
chcp 437>nul
for /f %%a in ('cmd/u/cecho !gbk!')do set un=%%a
::获取unicode文件头字符0xFF 0xFE,并存放在变量head中
Set head=!un:~0,1!!un:~2,1!
Set head
set/p=!head!`O}Y<nul>$tmp.txt
::"你好" 对应的unicode编码为4f60 597d
start $tmp.txt
pause[/code]下面列出常用汉字unicode编码的低位值供查阅:[code]plp_00=刀 阀 怀 开 攀 退 稀 销 需 言 耀 一 匀 最
plp_01=币 持 愁 丁 封 搁 阁 洁 老 码 企 省 谁 送 锁 态 威
plp_02=昂 蜂 挂 搂 茂 漂 适 市 堂 异 脂
plp_03=布 吃 调 范 考 七 弃 球 刃 逃 娃
plp_04=锄 处 各 弄 茄 射 萄
plp_05=包 锅 搅 舅 谅 茅 清 帅 椅 阅 者
plp_06=爆 匆 脆 堆 帆 分 将 昆 理 逆 漆 圆
plp_07=备 标 崇 唇 娇 切 万 震 指
plp_08=合 圈 师 谈 锈 愈 月 丈
plp_09=唉 按 吉 嘉 脉 霉 眉 三 选 有 愉
plp_0a=弊 吊 脊 刊 上 谊 尊
plp_0b=程 栋 锋 看 谋 朋 笋 下 洋
plp_0c=昌 而 萌 砌 舌 同 希
plp_0d=倍 不 服 复 砍 名 萍 稍 舍 耍 伍 植
plp_0e=缎 后 谎 茎 挎 猎 明 税 与 怎
plp_0f=搏 伏 昏 栏 漏 式 氏 踏 透 戏 夏 小 意 脏
plp_10=餐 成 伐 渐 耐 锐 唐 吐 帐 逐
plp_11=丑 蔑 民 脑 少 树 挑 我 向 笑 刑 休
plp_12=倒 递 划 椒 戒 怒 洒 舒
plp_13=弓 鼓 缓 吓 易 专 蜓
plp_14=笔 阔 气 且 途 研 演 渔
plp_15=耕 怕 夕 引
plp_16=编 脖 怖 化 或 尖 世 帖 挖 外 崖 砖
plp_17=北 逗 耗 朗 栗 列 吗 渗 洗 众
plp_18=尘 甘 帘 刘 娘 丘 倘 优 缘 战 蜘
plp_19=鄙 丙 匙 错 候 伙 则
plp_1a=多 刚 会 脚 戚 尚 甚 通 业 倚 愚
plp_1b=创 丛 笛 君 猛 望
plp_1c=猜 东 怜 谜 蜜 霜 搜 甜 夜 帜
plp_1d=贝 尝 朝 初 帝 缝 萝 逝 思 丝
plp_1e=洞 搞 伞 吞 舞 霞 贞
plp_1f=弟 队 负 感 够 借 鸟 期 生 速 土 伟 星 真 舟
plp_20=缠 稠 传 怠 匠 眠 漠 挠 欠 渠 删 鼠 素 映 造 张
plp_21=堡 倡 次 挡 渡 贡 鸡 蜡 模 锡 校
plp_22=财 蠢 丢 逢 欢 索 踢 谢
plp_23=锣 鸣 圣 欣 谣 责 渣 挣
plp_24=锤 堤 愤 唤 挤 两 判 伤 贤 尤
plp_25=败 春 挥 急 津 严 营
plp_26=带 否 符 焦 锦 倦 谦 瘦 弦 鸦
plp_27=吧 大 货 货 茧 紧 愧 欧 丧 性 氧
plp_28=挨 笨 吨 谨 木 用 怨 在 眨 质 昨
plp_29=踩 贩 吩 利 甩 缩 天 温
plp_2a=匪 个 怪 航 横 洪 截 堪 挪 太 贪 伪 未 株 猪 爪 踪
plp_2b=别 夫 含 漫 茫 猫 末 贫 紫
plp_2c=搬 般 本 第 爬 蔬 听
plp_2d=搭 购 席 鸭 崭 中
plp_2e=帮 逮 刮 键 售 献 央
plp_2f=伯 港 贯 锯 累 眯 启 是 术 弯 唯 振 支
plp_30=到 地 丰 估 舰 田 焰
plp_31=爱 舱 唱 贱 就 谱 弱 失 脱 樱 由 娱 朱 嘱
plp_32=串 防 甲 露 欲 洲
plp_33=耳 申 稳 阳
plp_34=伴 戴 猴 缴 渴 临 破 朴 琴 水 贴 头 吴 阴 嘴
plp_35=吵 电 堵 朵 贵 阵
plp_36=茶 父 阶 伶 然 收 制
plp_37=谷 户 男 刷 样 爷
plp_38=霸 爸 常 缸 核 夸 脸 贸 券 伸 尸 丸 吸 永 游
plp_39=船 吹 丹 弹 爹 费 改 根 夹 匹 锹
plp_3a=场 尺 刺 夺 贺 机 欺 强 区 缺 示 挺 为 携 债
plp_3b=鼻 耻 稻 锻 攻 画 活 刻 医 主 总 阻 蜻
plp_3c=逼 格 鬼 吼 稼 礼 笼 尼 似 眼 贼 值 昼
plp_3d=蔽 耽 鸽 尽 丽 落 帽 洽 爽 挽 朽 栽
plp_3e=放 猾 圾 举 款 派 脾 倾 社 尾 显
plp_3f=阿 儿 房 稿 贿 尿 愿 政
plp_40=础 局 杀 所 血 呀 址 着
plp_41=扁 繁 流 十 允 睁 汁
plp_42=层 桂 魂 剂 求 杂
plp_43=晃 乃 千 权 桃 剃 元
plp_44=附 魄 摄 蹄 兄 啄 资
plp_45=畅 充 鹅 幅 故 际 久 居 浅
plp_46=摆 呆 但 豆 杆 浆 框 捆 陆 婆 商 兆
plp_47=汇 假 浇 均 片 奇 扇 升 艇 歇 摇 蝇 遇 镇
plp_48=案 版 陈 呈 慈 蹈 么 屈 午 先 效
plp_49=草 等 奉 光 汉 蕉 歉 义 捉
plp_4a=啊 半 坊 告 届 腊 鹊 摊 削 浊
plp_4b=测 奋 筋 晋 克 恋 聋 手 屋 之
plp_4c=敌 赌 歌 灌 慌 煌 界 牌 晌 塌 乌 行 职 桌
plp_4d=遍 才 籍 降 免 配 前 位
plp_4e=低 乎 虎 华 济 煎 李 捎 慎 扎
plp_4f=乏 坏 虏 敏 捏 偏 赏 畏 协 杏 住 奏
plp_50=材 腐 罐 荐 捐 恐 筐 乐 齐 桐 限 子 坐
plp_51=村 浑 剑 救 坑 虑 扑 桑 塑 网 屑 筑
plp_52=扒 归 恒 荒 酒 乒 青 晒 筒
plp_53=打 当 道 浓 乓 体 晓
plp_54=奔 答 孔 联 魔 赔 腔 乔 扔 摔 塔 兔 衔
plp_55=捕 单 何 录 幕 慕 陕 晕 孕 展
plp_56=策 乖 湖 奖 赖 卖 剖 祖
plp_57=汗 街 块 罗 南 穗 套 遗 著 字
plp_58=乘 存 艘 塘 托 员 摘 橘
plp_59=教 静 留 孙 牙 乙 余 浙
plp_5a=博 楚 党 罚 婚 坚 聚 晚 虚 赚 做
plp_5b=佛 葛 睛 扛 牛 赛 筛 坛
plp_5c=卜 杜 镜 潜 停 呜 畜 作
plp_5d=坝 九 孝 祝 筝
plp_5e=敞 非 捞 乞 瑞 塞 神 属 赞
plp_5f=坟 江 孟 束 损 也
plp_60=池 杠 靠 你 屠 习 赠 占
plp_61=荡 陡 衡 捡 卡 屡 坡 葡 睡 条 污 乡 橡 象
plp_62=罢 敢 换 恢 牢 慢 面 呢 形 赢 院 止
plp_63=档 董 督 季 扣 遣 荣 散 衣 佣 正
plp_64=赤 除 此 孤 煤 汤
plp_65=奥 剥 补 步 饥 健 来 略 桥 入 祥 腥 遥
plp_66=蹦 车 警 啦 书 坦 武 学
plp_67=摧 慧 剧 牧 捧 卧 轧 照 执
plp_68=表 晨 轨 恨 桨 慨 票 器 全 杨 周
plp_69=彩 恩 革 孩 浩 扩 摩 佩 剩 物 险 罩
plp_6a=聪 番 豪 剪 浪 陪 歪 汪 罪
plp_6b=八 虫 火 扫 衫 填 卫
plp_6c=睬 衬 酬 公 敬 马 扬 硬 葬 转
plp_6d=饭 恭 六 灭 扭 遭
plp_6e=扮 潮 浮 据 轮 普 确 絮 饮 遮 置 煮
plp_6f=杯 扯 灯 副 景 良 软 屯 息 药
plp_70=驰 轰 灰 艰 杰 兰 镰 买 恰 扰 饰 数 衰 慰 腰 印 鹰 走
plp_71=饱 葱 共 酱 乱 驱 山 危 影
plp_72=蹲 干 割 敲 色 牲 饲
plp_73=驳 关 即 佳 恳 米 女 平 乳 味 艳
plp_74=赴 蝴 鉴 驴 年 奴 晴 却 兴 穴 浴 整
plp_75=兵 葵 灵 陵 卵 牵 页 赵 遵
plp_76=并 蝶 顶 恶 扶 赶 晶 究 奶 偶 其 饶 婶 驶 陶 桶 灶
plp_77=海 荷 捷 具 卷 酷 起 顷 穷 偷 陷
plp_78=典 祸 奸 浸 摸 酸 卸 幸
plp_79=筹 腹 虹 批 她 特 项 役
plp_7a=饺 空 顺 牺 艺 智
plp_7b=彻 登 幻 类 轻 死 须 养 驻
plp_7c=彼 饼 呼 歼 兼 楼 恼 驼 幼 鱼
plp_7d=白 好 命 汽 兽 虽 顽 载
plp_7e=百 顾 驾 签 松 腾 湾 虾 灾 找
plp_7f=板 避 灿 长 偿 承 齿 穿 顿 饿 广 轿 鹿 酿 湿 使 腿 西 屿
plp_80=膀 技 简 蚀 往 掀 邀
plp_81=趁 极 禁 犁 梁 鲁 宁 岁 突 要 蚁 躁 征
plp_82=厂 垂 概 节 蚂 骂 岂 如 颂 涂 喂 暂 皂
plp_83=较 境 垃 璃 窃 肃 它 沃 殃
plp_84=袄 薄 抄 的 构 骄 径 龄 垄 悄 善 妄 熄 预 窄 侄 庄
plp_85=超 待 辅 傅 梅 内 厅 馅 宅
plp_86=覆 馆 疆 皆 历 辆 了 领 隆 骆 庆 肆 榆
plp_87=妇 皇 喇 率 撇 文 宇
plp_88=辈 冈 很 颈 妈 劈 沈 守 授 消 予 针
plp_89=安 沉 掉 钉 粉 溉 喉 辉 厉 炉 肉 涉 悉 玉 誉 争 醉
plp_8a=把 膊 床 炊 喊 殊 蚊 熊 羊 越
plp_8b=残 馋 醋 袋 例 律 趋 事 宋 王 鞋 型 压
plp_8c=册 二 和 肌 碌 貌 完 厌 验 涌 掌
plp_8d=碍 傍 袍 融 侍 再
plp_8e=美 碎 瞎 炎 于
plp_8f=福 膏 宏 亏 疏 随 掏 序 咏
plp_90=咐 析 徐 隐 源
plp_91=斑 碑 撑 骑 暑 窑 疑 云
plp_92=炒 互 垒 粒 瞒 馒 芒 冒 排 撒 徒 醒
plp_93=钓 库 墓 誓 输 抓
plp_94=岔 隔 悔 熔 五 应
plp_95=蚕 厕 底 井 炕 撕 投 枕
plp_96=抖 暖 首 袖 妖 殖
plp_97=暗 窗 粗 得 店 斗 岗 抗 颗 疗 林 骗 算 碗 宗
plp_98=喘 官 掘 厘 题 粘 折
plp_99=料 龙 蒙 庙 妙 墙 沙 隙 香 写 宙
plp_9a=定 肚 抚 厚 亚
plp_9b=岛 供 军 力 抛 膛 涛 些 辛
plp_9c=榜 窜 府 辜 果 溜 膜 农 蒜 袜 喜 鲜 斜 颜 宜 障
plp_9d=宝 额 肝 喝 涝 劝 窝 膝 依 芝 枝
plp_9e=办 钞 辞 实 羞 增 撞
plp_9f=辟 废 功 沟 龟 熟 趟 悟 原 钟
plp_a0=肠 颠 冠 加 纠 鞠 掠 悠
plp_a1=股 管 计 骡 没 审 亡 务 羡 御 澡
plp_a2=订 钢 红 客 抢 梢 探 肢
plp_a3=患 辣 劣 那 趣 宣 枣
plp_a4=疤 颤 撤 肤 护 交 斤 群 认 室 纤 冤 骤
plp_a5=报 斥 肥 接 妥 钥 粥
plp_a6=度 垦 芦 麦 梦 润 厦 亦 约 悦 侦
plp_a7=碧 侧 产 斧 级 控 瞧 座
plp_a8=辨 厨 储 动 妨 骨 梨 墨 您 膨 侨 讨 推 榨 涨
plp_a9=辩 钩 肩 箩 亩 让 玩 岩 掩 斩 助
plp_aa=粪 纪 努 枪 溪 宪 邪 薪 循
plp_ab=被 辫 垫 宫 劫 莫 沫 披 身 享 疫
plp_ac=催 冬 芬 躬 京 犬 抬 悬 咬
plp_ad=鞭 播 断 箭 岭 炭 亭 庭 袭 训
plp_ae=疮 垮 粮 亮 暮 炮 皮 微 侮 议 邮
plp_af=纯 犯 疯 环 肯 枯 薯 斯 梯 讯
plp_b0=冰 辰 记 碰 现 械 新 宰
plp_b1=抱 花 励 粱 钱 辱 纱 箱 咱 皱
plp_b2=傲 悲 冲 躲 纲 讲 劲 莲 疲 亲 液 育
plp_b3=芳 害 河 决 咳 劳 纳 钳 梳 足
plp_b4=暴 榴 趴 宴
plp_b5=抵 段 况 侵 宵 纵
plp_b6=家 架 隶 冶 状
plp_b7=德 纷 获 康 冷 喷 嚷
plp_b8=岸 沸 咸 许 庸 炸 蒸 纸
plp_b9=边 点 方 妹 抹 芹 容 纹 犹 油
plp_ba=纺 肺 论 螺 人 躺
plp_bb=玻 冻 离 邻 麻 妻 去 傻 治 钻
plp_bc=悼 嚼 炼 疼 押
plp_bd=抽 讽 宽 辽 纽 禽 施 芽 咽 羽
plp_be=宾 达 禾 疾 精 难 设 肾 沾
plp_bf=便 殿 访 势 宿 县 线 沿 亿 肿
plp_c0=哀 激 检 净 雀 什 秀 胀
plp_c1=壁 裁 磁 毁 嫁 见 旁 品 迁 仁 私 铁 翁 胁 雁 证
plp_c2=臂 参 懂 观 狂 烂 裂 嫂
plp_c3=促 练 铃 燃 秃 胃 心 跃
plp_c4=柄 规 哄 黄 寄 评 泄 雄 蓄 组
plp_c5=必 病 翅 担 仅 旅 铅 情 迅 雅 毅 装
plp_c6=拆 胆 秆 集 密 盆 仆 识 视 细 忆 准
plp_c7=采 仇 过 寇 篇 蛇 勇 症 织
plp_c8=哈 览 烈 迈 盈 又 终
plp_c9=叉 觉 拉 廉 凉 棉 勉 泉 揉 诉
plp_ca=泊 糊 及 郊 今 惊 菊 俊 廊 囊 释 益 诊
plp_cb=蛋 介 立 淋 埋 棋 秋 始 旋 友 滋
plp_cc=拌 背 跌 富 忌 菌 里 双 嫌
plp_cd=苍 操 词 反 棍 母 拍 忍 仍 绍 响 珍 种 重
plp_ce=城 从 风 郎 黎 野 迎
plp_cf=柏 藏 减 经 量 每 描 苏 像 盏 族
plp_d0=拐 狐 槐 姐 某 提 盐 运
plp_d1=绑 凑 发 姑 黑 滑 惑 监 金 近 科 跑 哑 译 郑
plp_d2=棒 插 毒 寒 盒 角 拒 懒 勒 秒 绒 痒
plp_d3=仓 结 染 嗓 姓
plp_d4=拔 比 返 柔 叔 滔 委 仔
plp_d5=毕 雕 法 糕 痕 绕 试 惕 燕 裕 棕
plp_d6=盖 胖 取 竖 他 糖 拖
plp_d7=盗 狗 哗 苗 旗 诗 受 俗 仗 志
plp_d8=变 俘 付 高 烘 还 绘 拘 秘 默 盘 飘 淘 忘
plp_d9=毙 给 忙 裙 蛙 仙 叙 站 这
plp_da=诚 滚 僚 棚
plp_db=泛 进 毛 矛 叛 盛 四 痛 招 蛛 烛
plp_dc=拜 菜 瓜 柜 姜 络 胜 铜 惜 远
plp_dd=保 川 话 距 绝 蓝 凝 违
plp_de=胞 诞 飞 回 绞 竞 连 州
plp_df=察 迟 跟 竟 盟 食 统 烟 域 糟 租
plp_e0=菠 翠 叠 狠 惠 几 糠 无 因 章 忠 珠
plp_e1=淡 凡 胡 狡 满 泡 握 峡 信 巡
plp_e2=波 既 绢 拢 团 询
plp_e3=瓣 臣 代 拣 解 口 绣
plp_e4=秤 凤 古 烤 裤 令 滤 勤 壤
plp_e5=查 该 哥 工 句 滥 姥 泥 日 若 童 以 拥 燥 知
plp_e6=擦 触 旦 烦 苦 拦 另 瓦 详 左
plp_e7=继 旧 惧 巧 烧 秧 忧
plp_e8=滨 拨 部 惨 巨 跨 门 磨 哨 姨 雨 寨 旨 注 叨
plp_e9=惩 巩 绩 矩 俩 嫩 滩 早 择 秩
plp_ea=跪 揪 泪 哪 闪 绪 雪 仪 只 自
plp_eb=毫 叫 快 迫 士 烫
plp_ec=独 括 们 蓬 旬 召
plp_ed=班 闭 惭 臭 短 俭 揭 竭 哭 凭 热 狭 续 语 园
plp_ee=矮 差 叮 篮 蛮 目 森 狮 问 修 壮
plp_ef=闯 盯 端 俯 惯 积 凯 可 路 毯 误
plp_f0=称 惰 峰 困 声 述 台 泰 痰 仰
plp_f1=旱 己 俱 深 英 诱 狱 柱
plp_f2=铲 盲 曲 史 闲 已 哲
plp_f3=凳 胳 壳 柳 拳 裳 绳 石 跳 想 音 泳 右 至
plp_f4=巴 柴 滴 更 间 拴 说 围 维 援 直 致
plp_f5=践 僵 棵 绵 念 诵 韵
plp_f6=壶 件 胶 零 瓶 时 凶 延 叶 银
plp_f7=号 混 价 旷 雷 闷 迷 请 巷
plp_f8=绸 寸 狸 司 相 胸 闸 诸 铸
plp_f9=雹 对 裹 迹 闹 培 苹 惹 叹 淹 竹
plp_fa=出 固 基 建 铺 勺 寺 旺
plp_fb=读 翻 击 僻 任 添 闻 系 泻 寻 移 姻
plp_fc=导 叼 狼 盼 拼 泼 翼
plp_fd=槽 都 份 国 忽 能 嗽 泽 追
plp_fe=盾 蛾 勾 巾 课 链 拾 图 雾 曾
plp_ff=仿 竿 矿 绿 拿 柿 寿 替 勿 姿[/code]

wankoilz 发表于 2011-5-19 19:28

楼上发这个出来是想做个查表法的编码转换么?

CrLf 发表于 2011-5-19 20:13

[quote]plp_00=刀 阀 怀 开 攀 退 稀 销 需 言 耀 一 匀 最
plp_01=币 持 愁 丁 封 搁 阁 洁 老 码 企 省 谁 送 锁 态 威
plp_02=昂 蜂 挂 搂 茂 漂 适 市 堂 异 脂
plp_03=布 吃 调 范 考 七 弃 球 刃 逃 娃
plp_04=锄 ...
[size=2][color=#999999]plp626 发表于 2011-5-19 17:17[/color] [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=79254&ptid=12347][img]http://bbs.bathome.net/images/common/back.gif[/img][/url][/size][/quote]
原来那个帖子的素材是从这里捣鼓过去的...

batman 发表于 2011-5-19 20:39

plp626终于又回到拆分法上来了,呵呵。。。

CrLf 发表于 2011-5-19 23:04

[b] [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=79269&ptid=12347]8#[/url] [i]batman[/i] [/b]


可是“在中文代码页下”应该用不了拆分法吧...很纳闷,等待正解

CrLf 发表于 2011-5-19 23:10

看到plp兄的拆分法之前曾寄希望于cmd /u,但是测试后发现不行,内容全变了,除此以外啥想法都没有...

guo135956 发表于 2011-5-22 16:34

无效代码页
系统找不到指定的文件。
eof=→
626
〇#
请按任意键继续. . .

plp626 发表于 2011-5-22 16:44

[b] [url=http://www.bathome.net/redirect.php?goto=findpost&pid=79658&ptid=12347]11#[/url] [i]guo135956[/i] [/b]


你的,详细环境和测试代码是?

playinthesky 发表于 2011-7-2 23:10

[b] [url=http://www.bathome.net/redirect.php?goto=findpost&pid=79661&ptid=12347]12#[/url] [i]plp626[/i] [/b]
WINDOWS 7下貌似不能调用。

CrLf 发表于 2011-8-7 22:42

[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=84762&ptid=12347]13#[/url] [i]playinthesky[/i] [/b]


    我也是 win7 系统,可以正常运行呀...以下为半角转全角代码,试试正常不:[code]@echo off&setlocal enabledelayedexpansion
chcp 437
call ascmap $
(for /l %%a in (32 1 126) do (
        set /a "n=%%a+128"
        for /f "eol= delims=" %%b in ("!n!") do (
                echo [!$:~%%a,1!=!$:~163,1!!$:~%%b,1!]
        )
))>全角字符.txt
pause[/code]

Demon 发表于 2012-9-8 23:43

重定向到文件时才是0x00~0xFF,在内存中有部分不属于0x00~0xFF。

amwfjhh 发表于 2014-11-6 11:11

奇思妙想……
晓得拆字方法后可以自己遍历一下需要代码的相关宽字符,再挑一个可以手输的用来作变量截取,再通过代码页车换将宽字符拆成高低字符,这样貌似都不需要cmd /u了,直接chcp就可以实现,只是需要去寻找这些特殊字符,先测试一下看看。


PS:
测试结果,遍历了下0~255*255内的本地化字符,单纯用本地化的DBCS(双字符字集),要取到没有歧义的字符,高位字节必大于0x80,且低字节大于等于0x40即0x814*以上才有不被之前字符重复的有效双字节字符,这即意味着要从双字节里面取需要的值,不管是低字节还是高字节,都有取不到的区间,还是用unicode可行。
有兴趣的同学可以参考下附件的表格。

链接: [url]https://pan.baidu.com/s/1ouycfG6Q5V8u2FVVeayqlg[/url] 提取码: iaus

email10t 发表于 2015-4-21 14:53

email10t 发表于 2015-4-21 14:55

email10t 发表于 2015-4-21 14:58

这是一个论坛的漏洞,欧元符号([attach]8580[/attach])被忽略了

Batcher 发表于 2015-4-21 15:12

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=157114&ptid=12347]15#[/url] [i]amwfjhh[/i] [/b]


    建议把大附件放到网盘上面

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.