代码之家  ›  专栏  ›  技术社区  ›  Simon Fromme

nroff/groff无法正确转换utf-8编码文件

  •  0
  • Simon Fromme  · 技术社区  · 6 年前

    我有一个utf-8编码的roff文件,我想用

    $ nroff -mandoc inittab.5
    

    但是,在 [äöüÄÖÜ] ,例如,没有正确显示,因为nroff假定使用ISO 8859-1编码(我得到 [äöüÃÃà nroff -Tutf8 标志不会更改行为,并且区域设置环境变量(我假定正确)设置为

    LANG=de_DE.utf8
    LC_CTYPE="de_DE.utf8"
    LC_NUMERIC="de_DE.utf8"
    LC_TIME="de_DE.utf8"
    LC_COLLATE="de_DE.utf8"
    LC_MONETARY="de_DE.utf8"
    LC_MESSAGES="de_DE.utf8"
    LC_PAPER="de_DE.utf8"
    LC_NAME="de_DE.utf8"
    LC_ADDRESS="de_DE.utf8"
    LC_TELEPHONE="de_DE.utf8"
    LC_MEASUREMENT="de_DE.utf8"
    LC_IDENTIFICATION="de_DE.utf8"
    LC_ALL=
    

    nroff公司 只是一个包装器脚本,最终调用 groff 我查了一下打给后者的电话:

    $ groff -Tutf8 -mandoc inittab.5
    

    character  src file  output file
    ---------  --------  -----------
    ä          C3 A4     C3 83 C2 A4
    ö          C3 B6     C3 83 C2 B6
    ü          C3 BC     C3 83 C2 BC
    Ä          C3 84     C3 83
    Ö          C3 96     C3 83
    Ü          C3 9C     C3 83
    ß          C3 9F     C3 83 
    

    我觉得这种行为很奇怪 C3 83 并将原始字节序列一起截断,用于大型元音变音符和 ß ?)

    这是为什么我怎么做 nroff公司 格罗夫

    编辑:我正在使用 GNU nroff (groff) version 1.22.2

    1 回复  |  直到 6 年前
        1
  •  2
  •   ToasterKing    6 年前

    与其他troff实现(即Plan9和Herelomon troff)不同,groff在文档中不支持UTF8。但是,可以使用 preconv(1)

    举个例子 groff_ms(7)

    .TL
    StackOverflow Test Document
    .AU
    ToasterKing
    .PP
    I like going to the café down the street
    
    äöüÄÖÜ
    

    使用 groff 通常,我们得到:

                    StackOverflow Test Document
    
    
                            ToasterKing
    
    
         I like going to the café down the street
    
    äöüÃÃÃ
    

    但是当使用 preconv | groff groff -k ,我们得到:

                    StackOverflow Test Document
    
    
                            ToasterKing
    
    
         I like going to the café down the street
    
    äöüÄÖÜ
    

    查看的输出 preconv

    .lf 1 so.ms
    .TL
    StackOverflow Test Document
    .AU
    ToasterKing
    .PP
    I like going to the caf\[u00E9] down the street
    
    \[u00E4]\[u00F6]\[u00FC]\[u00C4]\[u00D6]\[u00DC]