---
name: "uni2ascii"
section: "1"
platform: "linux"
package: "uni2ascii"
version: "4.20-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/uni2ascii"
---

# uni2ascii(1)

convert UTF-8 Unicode to various 7-bit ASCII representations

## NAME

uni2ascii - convert UTF-8 Unicode to various 7-bit ASCII representations

## SYNOPSIS

**uni2ascii \[options\] (\<input file name\>)**

## DESCRIPTION

*uni2ascii* converts UTF-8 Unicode to various 7-bit ASCII representations. If no format is specified, standard hexadecimal format (e.g. 0x00e9) is used.  It reads from the standard input and writes to the standard output.

Command line options are:

- **-A**

  List the single character approximations carried out by the -y flag.

- **-a \<format\>**

  Convert to the specified format. Formats may be specified by means of the following arbitrary single character codes, by means of names such as "SGML\_decimal", and by examples of the desired format.

-

  **A** Generate hexadecimal numbers with prefix U in angle-brackets (\<U00E9\>).

-

  **B** Generate \\x-escaped hex (e.g. \\x00E9)

-

  **C** Generate \\x escaped hexadecimal numbers in braces (e.g. \\x{00E9}).

-

  **D** Generate decimal HTML numeric character references (e.g. &#0233;)

-

  **E** Generate hexadecimal with prefix U (U00E9).

-

  **F** Generate hexadecimal with prefix u (u00E9).

-

  **G** Convert hexadecimal in single quotes with prefix X (e.g. X'00E9').

-

  **H** Generate hexadecimal HTML numeric character references (e.g. &#x00E9;)

-

  **I** Generate hexadecimal UTF-8 with each byte's hex preceded by an =-sign (e.g. =C3=A9) . This is the  Quoted Printable format defined by RFC 2045.

-

  **J** Generate hexadecimal UTF-8 with each byte's hex preceded by a %-sign (e.g.  %C3%A9). This is the URI escape format defined by RFC 2396.

-

  **K** Generate octal UTF-8 with each byte escaped by a backslash (e.g.  \\303\\251)

-

  **L** Generate \\U-escaped hex outside the BMP, \\u-escaped hex within the BMP (U+0000-U+FFFF).

-

  **M** Generate hexadecimal SGML numeric character references (e.g. \\#xE9;)

-

  **N** Generate decimal SGML numeric character references (e.g. \\#233;)

-

  **O** Generate octal escapes for the three low bytes in big-endian order(e.g. \\000\\000\\351))

-

  **P** Generate hexadecimal numbers with prefix U+ (e.g. U+00E9)

-

  **Q** Generate character entities (e.g. &eacute;) where possible, otherwise hexadecimal numeric character references.

-

  **R** Generate raw hexadecimal numbers (e.g. 00E9)

-

  **S** Generate hexadecimal escapes for the three low bytes in big-endian order (e.g. \\x00\\x00\\xE9)

-

  **T** Generate decimal escapes for the three low bytes in big-endian order (e.g. \\d000\\d000\\d233)

-

  **U** Generate \\u-escaped hexadecimal numbers (e.g. \\u00E9).

-

  **V** Generate \\u-escaped decimal numbers (e.g. \\u00233).

-

  **X** Generate standard hexadecimal numbers (e.g. 0x00E9).

-

  **0** Generate hexadecimal UTF-8 with each byte's hex enclosed within angle brackets (e.g. \<C3\>\<A9\>).

-

  **1** Generate Common Lisp format hexadecimal numbers (e.g. #x00E9).

-

  **2** Generate Perl format decimal numbers with prefix v (e.g. v233).

-

  **3** Generate hexadecimal numbers with prefix $ (e.g. $00E9).

-

  **4** Generate Postscript format hexadecimal numbers with prefix 16# (e.g. 16#00E9).

-

  **5** Generate Common Lisp format hexadecimal numbers with prefix #16r (e.g. #16r00E9).

-

  **6** Generate ADA format hexadecimal numbers with prefix 16# and suffix # (e.g. 16#00E9#).

-

  **7** Generate Apache log format hexadecimal UTF-8 with each byte's hex preceded by a backslash-x (e.g.  \\xC3\\xA9).

-

  **8** Generate Microsoft OOXML format hexadecimal numbers with prefix \_x and suffix \_ (e.g. \_x00E9\_).

-

  **9** Generate %\\u-escaped hexadecimal numbers (e.g. %\\u00E9).

- **-B**

  Transform to ASCII if possible. This option is equivalent to the combination cdefx.

- **-c**

  Convert circled and parenthesized characters to their unenclosed counterparts.

- **-d**

  Strip diacritics. This converts single codepoints representing characters with diacritics to the corresponding ASCII character and deletes separately encoded diacritics.

- **-e**

  Convert characters to their approximate ASCII equivalents, as follows:\
   U+0085  next line                                   0x0A  newline \
   U+00A0  no break space                              0x20  space \
   U+00AB  left-pointing double angle quotation mark   0x22  double quote\
   U+00AD  soft hyphen                                 0x2D  minus\
   U+00AF  macron                                      0x2D  minus\
   U+00B7  middle dot                                  0x2E  period\
   U+00BB  right-pointing double angle quotation mark  0x22  double quote\
   U+1361  ethiopic word space                         0x20  space \
   U+1680  ogham space                                 0x20  space \
   U+2000  en quad                                     0x20  space \
   U+2001  em quad                                     0x20  space \
   U+2002  en space                                    0x20  space \
   U+2003  em space                                    0x20  space \
   U+2004  three-per-em space                          0x20  space \
   U+2005  four-per-em space                           0x20  space \
   U+2006  six-per-em space                            0x20  space\
   U+2007  figure space                                0x20  space\
   U+2008  punctuation space                           0x20  space \
   U+2009  thin space                                  0x20  space \
   U+200A  hair space                                  0x20  space \
   U+200B  zero-width space                            0x20  space \
   U+2010  hyphen                                      0x2D  minus\
   U+2011  non-breaking hyphen                         0x2D  minus\
   U+2012  figure dash                                 0x2D  minus\
   U+2013  en dash                                     0x2D  minus\
   U+2014  em dash                                     0x2D  minus\
   U+2018  left single quotation mark                  0x60  left single quote \
   U+2019  right single quotation mark                 0x27  right or neutral single quote \
   U+201A  single low-9 quotation mark                 0x60  left single quote \
   U+201B  single high-reversed-9 quotation mark       0x60  left single quote \
   U+201C  left double quotation mark                  0x22  double quote\
   U+201D  right double quotation mark                 0x22  double quote\
   U+201E  double low-9 quotation mark                 0x22  double quote\
   U+201F  double high-reversed-9 quotation mark       0x22  double quote\
   U+2022  bullet                                      0x6F  small letter o\
   U+2028  line separator                              0x0A  newline \
   U+2032  prime                                       0x27  right or neutral single quote\
   U+2033  double prime                                0x22  double quote\
   U+2039  single left-pointing angle quotation mark   0x60  left single quote \
   U+203A  single right-pointing angle quotation mark  0x27  right or neutral single quote \
   U+204E  low asterisk                                0x2A  asterisk\
   U+2212  minus sign                                  0x2D  minus\
   U+2216  set minus                                   0x5C  backslash\
   U+2217  asterisk operator                           0x2A  asterisk\
   U+2223  divides                                     0x7C  vertical line\
   U+2500  box drawing light horizontal                0x2D  minus\
   U+2501  box drawing heavy horizontal                0x2D  minus\
   U+2502  box drawing light vertical                  0x7C  vertical line\
   U+2503  box drawing heavy vertical                  0x7C  vertical line\
   U+2731  heavy asterisk                              0x2A  asterisk\
   U+275D  heavy double turned comma quotation mark    0x22  double quote\
   U+275E  heavy double comma quotation mark           0x22  double quote\
   U+3000  ideographic space                           0x20  space \
   U+FE60  small ampersand                             0x26  ampersand\
   U+FE61  small asterisk                              0x2A  asterisk\
   U+FE62  small plus sign                             0x2B  plus sign

- **-E**

  List the expansions performed by the -x flag.

- **-f**

  Convert stylistic variants to plain ASCII. Stylistic equivalents include: superscript and subscript forms, small capitals (e.g. U+1D04), script forms (e.g. U+212C), black letter forms (e.g. U+212D), fullwidth forms (e.g. U+FF01), halfwidth forms (e.g. U+FF7B), and the mathematical alphanumeric symbols (e.g. U+1D400).

- **-h**

  Help. Print the usage message and exit.

- **-l**

  Use lowercase a-f when generating hexadecimal numbers.

- **-n**

  Convert newlines too. By default, they are left alone.

- **-P**

  Pass through Unicode rather than converting to ASCII escapes if the character is not converted to an ASCII character by a transformation such as diacritic stripping. Note that if this option is used the output may not be pure ASCII.

- **-p**

  Pure. Convert characters within the ASCII range except for space and newline as well as those above.

- **-q**

  Quiet. Do not chat unnecessarily while working.

- **-s**

  Convert space characters too. By default, they are left alone.

- **-S \<Unicode:ASCII\>**

  Define a custom substitution. The argument should consist of the Unicode codepoint to be replaced followed by the ASCII code of the character to be used as replacement, separated by a colon. If no ASCII code follows the colon, the specified Unicode character will be deleted. The code values may be in hexadecimal, octal, or decimal following the usual conventions (to be precise,those of [strtoul(3)](/strtoul/3.md)). This option may be repeated as many times as desired to define multiple substitutions.

- **-v**

  Print program version information and exit.

- **-w**

  Add a space after each converted item.

- **-x**

  Expand certain characters to multicharacter sequences. The characters affected are the same as those affected by the -y option.\
   U+00A2 CENT SIGN                        -\> cent\
   U+00A3 POUND SIGN                       -\> pound\
   U+00A5 YEN SIGN                         -\> yen\
   U+00A9 COPYRIGHT SYMBOL                 -\> (c)\
   U+00AE REGISTERED SYMBOL                -\> (R)\
   U+00BC ONE QUARTER                      -\> 1/4\
   U+00BD ONE HALF                         -\> 1/2\
   U+00BE THREE QUARTERS                   -\> 3/4\
   U+00C6 CAPITAL LETTER ASH               -\> AE\
   U+00DF SMALL LETTER SHARP S             -\> ss\
   U+00E6 SMALL LETTER ASH                 -\> ae\
   U+0132 LIGATURE IJ                      -\> IJ\
   U+0133 LIGATURE ij                      -\> ij\
   U+0152 LIGATURE OE                      -\> OE\
   U+0153 LIGATURE oe                      -\> oe\
   U+01F1 CAPITAL LETTER DZ                -\> DZ\
   U+01F2 MIXED LETTER Dz                  -\> Dz\
   U+01F3 SMALL LETTER DZ                  -\> dz\
   U+02A6 SMALL LETTER TS DIGRAPH          -\> ts\
   U+2026 HORIZONTAL ELLIPSIS              -\> ...\
   U+20AC EURO SIGN                        -\> euro\
   U+2122 TRADEMARK SIGN                   -\> (tm) br U+22EF MIDLINE HORIZONTAL ELLIPSIS      -\> ...\
   U+2190 LEFTWARDS ARROW                  -\> \<-\
   U+2192 RIGHTWARDS ARROW                 -\> -\>\
   U+21D0 LEFTWARDS DOUBLE ARROW           -\> \<=\
   U+21D2 RIGHTWARDS DOUBLE ARROW          -\> =\>\
   U+FB00 LATIN SMALL LIGATURE FF          -\> ff\
   U+FB01 LATIN SMALL LIGATURE FI          -\> fi\
   U+FB02 LATIN SMALL LIGATURE FL          -\> fl\
   U+FB03 LATIN SMALL LIGATURE FFI         -\> ffi\
   U+FB04 LATIN SMALL LIGATURE FFL         -\> ffl\
   U+FB06 LATIN SMALL LIGATURE ST          -\> st

- **-y**

  Convert certain characters having multi-character expansions to single-character ascii approximations instead (e.g. to maintain character-positioning). The characters affected are the same as those affected by the -x option.\
   U+00A2 CENT SIGN                        -\> c\
   U+00A3 POUND SIGN                       -\> #\
   U+00A5 YEN SIGN                         -\> Y\
   U+00A9 COPYRIGHT SYMBOL                 -\> C\
   U+00AE REGISTERED SYMBOL                -\> R\
   U+00BC ONE QUARTER                      -\> -\
   U+00BD ONE HALF                         -\> -\
   U+00BE THREE QUARTERS                   -\> -\
   U+00C6 CAPITAL LETTER ASH               -\> A\
   U+00DF SMALL LETTER SHARP S             -\> s\
   U+00E6 SMALL LETTER ASH                 -\> a\
   U+0132 LIGATURE IJ                      -\> I\
   U+0133 LIGATURE ij                      -\> i\
   U+0152 LIGATURE OE                      -\> O\
   U+0153 LIGATURE oe                      -\> o\
   U+01F1 CAPITAL LETTER DZ                -\> D\
   U+01F2 MIXED LETTER Dz                  -\> D\
   U+01F3 SMALL LETTER DZ                  -\> d\
   U+02A6 SMALL LETTER TS DIGRAPH          -\> t\
   U+2026 HORIZONTAL ELLIPSIS              -\> .\
   U+20AC EURO SIGN                        -\> E\
   U+22EF MIDLINE HORIZONTAL ELLIPSIS      -\> .\
   U+2190 LEFTWARDS ARROW                  -\> \<\
   U+2192 RIGHTWARDS ARROW                 -\> \>\
   U+21D0 LEFTWARDS DOUBLE ARROW           -\> \<\
   U+21D2 RIGHTWARDS DOUBLE ARROW          -\> \>

- **-Z \<format\>**

  Generate output using the supplied format. The format specified will be used as the format string in a call to [printf(3)](/printf/3.md) with a single argument consisting of an unsigned long integer. For example, to obtain the same output as with the -U flag, the format would be: \\u%04X.

If conversion of spaces is disabled (as it is by default), if space characters outside the ASCII range are encountered  (U+3000 ideographic space, U+1351 Ethiopic word space, and U+1680 ogham space mark), they are replaced with the ASCII space character (0x20) so as to keep the output pure 7-bit ASCII.

Note that XML and XHTML numeric character entities are like those of HTML with two restrictions. First, in X(HT)ML the terminating semi-colon may not be omitted. Second, in X(HT)ML the "x" must be lower-case, while in HTML it may be either upper- or lower-case. We always generate the terminating semi-colon and use a lower-case "x", so the option dubbed "HTML" produces valid XML and XHTML as well.

## EXIT STATUS

The following values are returned on exit:

- 0 SUCCESS

  The input was successfully converted.

- 2 I/O ERROR

  A system error ocurred during input or output.

- 3 INFO

  The user requested information such as the version number or usage synopsis and this has been provided.

- 5 BAD OPTION

  An incorrect option flag was given on the command line.

- 8 BAD RECORD

  Ill-formed UTF-8 was detected in the input.

## SEE ALSO

[ascii2uni(1)](/ascii2uni/1.md), Text::Unidecode

## AUTHOR

Bill Poser \<billposer@alum.mit.edu\>

## LICENSE

GNU General Public License
