Curl windows命令行中的特殊字符

Curl windows命令行中的特殊字符,curl,encoding,cmd,special-characters,Curl,Encoding,Cmd,Special Characters,我有一个curl命令,我试图在命令行中执行它。当我将命令粘贴到cmd时,会得到这些问号 C:\\development\\curl\\curl.exe -H "charset=utf-8" -u admin:test -X POST --data-urlencode "LabelA=الطباعة" http://192.168.1.10:7502/content/language-master/ar/jcr:content 我该怎么办?任何帮助 提前感谢,, yab86尝试运行该命令。如果

我有一个curl命令,我试图在命令行中执行它。当我将命令粘贴到cmd时,会得到这些问号

C:\\development\\curl\\curl.exe -H "charset=utf-8" -u admin:test -X POST --data-urlencode "LabelA=الطباعة" http://192.168.1.10:7502/content/language-master/ar/jcr:content

我该怎么办?任何帮助

提前感谢,,
yab86

尝试运行该命令。如果curl.exe是Unicode应用程序(而不是传统的ANSI),那么它应该可以工作。带方框的问号图示符与cmd.exe完全无关。控制台的当前字体(conhost.exe)不支持该脚本,通常可能不支持该脚本。控制台是一个经典的Windows NT应用程序,不支持非BMP字符、复杂脚本、自动字体回退等,与使用DirectWrite的现代应用程序相反。但是,它的输入缓冲区应该具有从剪贴板粘贴的确切UTF-16文本,这是CMD通过
ReadConsoleW
@eryksun读取的内容。限制这一点的不是字体,而是CMD环境本身。CMD中的显示仅限于代码页437,即旧式PC兼容的扩展ASCII字符集。@Tzalumen,CMD.exe不会将文本呈现到屏幕上。这是控制台的作业,由conhost.exe托管。要读取命令行,CMD调用
ReadConsoleW
,该命令行执行熟读(已处理)操作,在这种情况下,控制台将实现一个支持箭头键、退格、F7历史记录等的命令行编辑器,并一直读取到用户按enter键为止。控制台使用传统代码将文本呈现到屏幕上,传统代码仅限于基本的多语言平面、简单脚本和单一字体(无自动回退),但它仍然准确返回用户输入的UTF-16编码文本。@Tzalumen,控制台的输入代码页默认为OEM,在美国是437。当应用程序调用
ReadConsoleA
ReadFile
时,使用传统代码页。但是CMD是一个Unicode应用程序,它使用宽字符(UTF-16)函数
ReadConsoleW
WriteConsoleW
,等等。CMD确实在少数情况下使用控制台输入或输出代码页,特别是在
for/f
循环中从管道读取时,在解码批处理脚本时,以及(默认情况下,除非使用
/U
)将其内部命令(例如,
dir
)的输出重定向到管道或磁盘文件时。您可以通过chcp.com更改代码页。