返回列表 发帖
回复 1# akari

fc.exe 加持参数 /u,用以下代码试试...
  1. @echo off &setlocal &set "sc=中文字符串"
  2. set/p="%sc%"<nul>$.0&for %%l in ($.0) do (fsutil file createnew "$.1" %%~zl)>nul 2>nul
  3. for /f "skip=1 tokens=2 delims=: " %%a in ('fc /b /u $.0 $.1') do (call set "sx=%%sx%%%%a ")
  4. del/q "$.?" &echo,%sx%
  5. pause&exit/b
复制代码

TOP

本帖最后由 aloha20200628 于 2025-3-10 13:55 编辑

回复 5# akari

若4楼代码被存为 utf-8 编码文件运行,须用以下代码
  1. @echo off &chcp 65001>nul
  2. setlocal &set "sc=中文字符串"
  3. set/p="%sc%"<nul>$.1&for %%l in ($.1) do (fsutil file createnew "$.0" %%~zl)>nul 2>nul
  4. for /f "skip=1 tokens=2 delims=: " %%a in ('fc /b /u $.1 $.0') do (call set "sx=%%sx%%%%a ")
  5. del/q "$.?" &echo,%sx%
  6. pause&exit/b
复制代码
如果以上代码被存为 gb2312 编码(即记事本的ANSI编码)文件运行,则须修改其中第一行的 65001 为 936 即可...
1

评分人数

    • akari: 这个可以, 稍加改动我就可以使用了,非常感谢 ...技术 + 1

TOP

回复 9# akari

中文数据的utf-8编码与其ANSI编码是不同的,与之对应的16进制码数自然也是不同的...
8楼代码中的sc变量替换为 中文,用65001版获取的16进制码数应为 E4 B8 AD E6 96 87,而用936版获取的应为 D6 D0 CE C4。

TOP

本帖最后由 aloha20200628 于 2025-3-10 18:47 编辑

回复 11# akari

用以下这个版本就可以了,代码存为 ANSI(gb2312)编码运行,最后获取的变量 sx 值就是 E4 B8 AD E6 96 87 ...
  1. @echo off &chcp 936>nul
  2. del/q "$.?" 2>nul &setlocal &set "sc=中文" &chcp 65001>nul
  3. set/p="%sc%"<nul>$.1&for %%l in ($.1) do (fsutil file createnew "$.0" %%~zl)>nul 2>nul
  4. for /f "skip=1 tokens=2 delims=: " %%a in ('fc /b /u $.1 $.0') do (call set "sx=%%sx%%%%a ")
  5. chcp 936>nul &del/q "$.?" &echo,%sx%
  6. pause&exit/b
复制代码

TOP

返回列表