Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell:输出打印机、unicode和字体大小_Powershell_Unicode - Fatal编程技术网

Powershell:输出打印机、unicode和字体大小

Powershell:输出打印机、unicode和字体大小,powershell,unicode,Powershell,Unicode,只要foo.txt是英语,一切都很好(大部分情况下都很好) 如果foo.txt包含unicode字符,例如。राष्ट्र 然后打印出来的是像¥€这样的东西 我尝试传递-Encoding选项来获取内容,但结果没有改变 是否有可能确保unicode文本在没有 在后台启动Word/IE等来打印它 我的第二个问题是 是否可以控制使用哪种字体(类型和大小) 用打印机打印 在我的环境(Windows 10 2004 Build 19041.985,日语区域设置)中,我在以下情况下得到了正确的结果:

只要foo.txt是英语,一切都很好(大部分情况下都很好)

如果foo.txt包含unicode字符,例如。राष्ट्र 然后打印出来的是像¥€这样的东西

我尝试传递-Encoding选项来获取内容,但结果没有改变

  • 是否有可能确保unicode文本在没有 在后台启动Word/IE等来打印它
我的第二个问题是

  • 是否可以控制使用哪种字体(类型和大小) 用打印机打印
在我的环境(Windows 10 2004 Build 19041.985,日语区域设置)中,我在以下情况下得到了正确的结果:

  • .txt
    文件与BOM一起保存在UTF-8中,并使用
    获取内容进行打印。\foo.txt|Out Printer
  • .txt
    文件保存在不带BOM的UTF-8中,并使用
    获取内容进行打印。\foo.txt-编码UTF8 |输出打印机

我得到了不正确的结果(比如
爨ー爨セ爨キ爭財、游・財、ー),出现以下情况:

  • .txt
    文件保存在不带BOM的UTF-8中,并使用
    Get Content打印。\foo.txt|Out Printer

所以这看起来像是一个编码问题。请先检查@RavenKnit说了什么

是否可以确保unicode文本正确打印,而无需在后台启动Word/IE等进行打印

我找不到使用
Get PrinterPort
Get WmiObject Win32_Printer
prnmngr.vbs
prnqctl.vbs
的方法。如果在打印文件内容时不想显示窗口,可以使用
print
动词。它为
.txt
文件运行
notepad.exe
,为
.docx
文件运行
winword.exe
,等等

powershell "get-content foo.txt|Out-Printer"
是否可以控制打印机打印时使用的字体(类型和大小)


根据,默认字体为。因此,看起来您无法控制默认字体。

我认为这取决于打印机。默认配置可能只支持ASCII或某些扩展拉丁字符集。许多打印机可以用自定义语言控制;惠普有PCL,京瓷有PC,许多高端设备支持PostScript。因此,为了打印Unicode,一个特殊的控制序列可能是解决方案。Opt-Printer应该无缝地写入连接的任何打印机。如果我必须开始添加逻辑来确定打印机类型及其支持的语言,然后在文本文件中插入特定于打印机的魔法代码,那么它就无法实现输出打印机的全部目的。问题是,我可以“notepad/p foo.txt”并正确打印unicode代码字符…因此,Microsoft中至少有一个团队知道如何将文本正确发送到打印机:(1)使用带有-Encoding参数的get Content时(不带打印机),显示器是否正确显示字符?打印输出只是一个“假脱机”,因此如果显示器显示乱码,它将打印相同的字符。2)打印机默认支持非ASCII字符打印吗?Powershell 5
获取内容
如果没有
-编码
参数,将无法识别utf8无bom。
Start-Process .\foo.txt -Verb Print -WindowStyle Hidden -Wait