小编Rob*_*ade的帖子

为什么读取文件句柄时“utf8-c8”编码不起作用

我希望读取不会解码为有效 UTF-8 的字节序列,特别是与高和低代理代码点相对应的字节序列。结果应该是一个 raku 字符串。

\n

读到,在 raku 中,\'utf8-c8\' 编码可用于此目的。

\n

考虑代码点U+D83F。它是高代理项(为 UTF-16 代理项对的高半部分保留)。

\n

如果编码为 UTF-8,U+D83F 的字节序列为 0xED 0xA0 0xBF。

\n

吞咽文件?作品

\n

如果我使用“utf8-c8”作为编码来读取包含此字节序列的文件,我会得到预期的结果:

\n
echo -n $\'\\ud83f\' >testfile # Create a test file containing the byte sequence\n
Run Code Online (Sandbox Code Playgroud)\n

myprog1.raku:

\n
#!/usr/local/bin/raku\n$*OUT.encoding(\'utf8-c8\');\nprint slurp(\'testfile\', enc => \'utf8-c8\');\n
Run Code Online (Sandbox Code Playgroud)\n
$ ./myprog1.raku | od -An -tx1\n ed a0 bf\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x9c\x94\xef\xb8\x8f 预期结果

\n

吞咽文件句柄?不起作用

\n

但是,如果我从读取文件路径切换到读取文件句柄,即使我将文件句柄的编码设置为“utf8-c8”,它也不起作用:

\n

myprog2.raku

\n
#!/usr/local/bin/raku\n$*OUT.encoding(\'utf8-c8\');\nmy $fh = open "testfile", :r, :enc(\'utf8-c8\');\nprint slurp($fh, enc …
Run Code Online (Sandbox Code Playgroud)

raku

9
推荐指数
0
解决办法
208
查看次数

如何使用vim作为unix过滤器来缩进源代码

我想使用vim作为通用源代码压头.

这是我对shell函数的初步尝试,它根据filetype和shiftwidth参数包装vim的调用以使vim重新生成STDIN:

vim-indent () {
  local ext=$1
  local width=$2
  local file=$(mktemp --suffix=."$ext")
  cat >| "$file"
  vim -E +"set sw=$width|normal! gg=G" +'x' -- "$file" >/dev/null
  cat "$file"
}
Run Code Online (Sandbox Code Playgroud)

测试1:具有2个空格缩进的reindent c源代码

vim-indent c 2 << "EOF"
int main(int argc, char** argv) {
        char operator;
        printf("Enter an operator (+, -): ");
        scanf("%c", &operator);
        switch (operator) {
               case '+':
               case '-':
                   printf(operator);
                   break;
               default:
                   printf("Error! operator is not correct");
        }
        return 0;
}
EOF
Run Code Online (Sandbox Code Playgroud)

成功.c源重新缩进,有2个空格缩进:

int main(int argc, char** argv) {
  char operator; …
Run Code Online (Sandbox Code Playgroud)

vim indentation

3
推荐指数
1
解决办法
191
查看次数

标签 统计

indentation ×1

raku ×1

vim ×1