小编use*_*ser的帖子

如何在没有 BOM 的情况下重定向 PowerShell 中的输入?

我正在尝试通过以下方式重定向 PowerShell 中的输入:

Get-Content input.txt | my-program args
Run Code Online (Sandbox Code Playgroud)

问题是管道 UTF-8 文本前面有一个 BOM (0xEFBBBF),我的程序无法正确处理它。

一个最小的工作示例:

// File: Hex.java
import java.io.IOException;

public class Hex {
    public static void main(String[] dummy) {
        int ch;
        try {
            while ((ch = System.in.read()) != -1) {
                System.out.print(String.format("%02X ", ch));
            }
        } catch (IOException e) {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在 PowerShell 中:

javac Hex.java
Set-Content textfile "ABC" -Encoding Ascii
# Now the content of textfile is 0x41 42 43 0D 0A
Get-Content textfile | java Hex
Run Code Online (Sandbox Code Playgroud)

或者干脆 …

powershell encoding byte-order-mark pipe

6
推荐指数
2
解决办法
750
查看次数

在 `printf` 中使用标签 `h` 或 `hh` 是否涉及未定义的行为?

例如,这样的代码可能很有用:

unsigned char ch = 0xf2;
printf("%02hhx", ch);
Run Code Online (Sandbox Code Playgroud)

但是,在作为可变参数函数的参数传递时ch被提升为。所以当使用时,存在类型不匹配。根据 C 标准,这里是否涉及任何未定义的行为?如果是C++呢?intprintf%hhx

这里有一些讨论但没有给出答案。

c c++ printf language-lawyer

2
推荐指数
1
解决办法
130
查看次数

标签 统计

byte-order-mark ×1

c ×1

c++ ×1

encoding ×1

language-lawyer ×1

pipe ×1

powershell ×1

printf ×1