---
name: "unicode"
section: "1plan9"
platform: "linux"
package: "9base"
version: "1:6-14"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/ascii/1plan9"
---

# unicode(1plan9)

interpret ASCII, Unicode characters

Part of [ascii(1plan9)](/ascii/1plan9.md).

## NAME

ascii, unicode - interpret ASCII, Unicode characters

## SYNOPSIS

**ascii** \[ **-8** \] \[ **-oxdb***n* \] \[ **-nct** \] \[ *text* \]

**unicode** \[ **-nt** \] *hexmin***-***hexmax*

**unicode** \[ **-t** \] *hex* \[ ... \]

**unicode** \[ **-n** \] *characters*

**look** *hex* **/lib/unicode**

## DESCRIPTION

*Ascii* prints the ASCII values corresponding to characters and *vice* *versa*; under the **-8** option, the ISO Latin-1 extensions (codes 0200-0377) are included. The values are interpreted in a settable numeric base; **-o** specifies octal, **-d** decimal, **-x** hexadecimal (the default), and **-b***n* base *n*.

With no arguments, *ascii* prints a table of the character set in the specified base. Characters of *text* are converted to their ASCII values, one per line. If, however, the first *text* argument is a valid number in the specified base, conversion goes the opposite way. Control characters are printed as two- or three-character mnemonics. Other options are:

- **-n**

  Force numeric output.

- **-c**

  Force character output.

- **-t**

  Convert from numbers to running text; do not interpret control characters or insert newlines.

*Unicode* is similar; it converts between UTF and character values from the Unicode Standard (see *utf*(7)). If given a range of hexadecimal numbers, *unicode* prints a table of the specified Unicode characters — their values and UTF representations. Otherwise it translates from UTF to numeric value or vice versa, depending on the appearance of the supplied text; the **-n** option forces numeric output to avoid ambiguity with numeric characters. If converting to UTF , the characters are printed one per line unless the **-t** flag is set, in which case the output is a single string containing only the specified characters. Unlike *ascii*, *unicode* treats no characters specially.

The output of *ascii* and *unicode* may be unhelpful if the characters printed are not available in the current font.

The file **/lib/unicode** contains a table of characters and descriptions, sorted in hexadecimal order, suitable for [*look*(1)](/look/1.md) on the lower case *hex* values of characters.

## EXAMPLES

- **ascii -d**

  Print the ASCII table base 10.

- **unicode p**

  Print the hex value of \`p'.

- **unicode 2200-22f1**

  Print a table of miscellaneous mathematical symbols.

- **look 039 /lib/unicode**

  See the start of the Greek alphabet's encoding in the Unicode Standard.

## FILES

- **/lib/unicode**

  table of characters and descriptions.

## SOURCE

**/src/cmd/ascii.c**\
 **/src/cmd/unicode.c**

## SEE ALSO

[*look*(1)](/look/1.md), [*tcs*(1)](/tcs/1.md), *utf*(7), *font*(7)
