1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004,
3 @c 2005, 2006, 2007 Free Software Foundation, Inc.
4 @c See file emacs.texi for copying conditions.
5 @node International, Major Modes, Frames, Top
6 @chapter International Character Set Support
8 @cindex international scripts
9 @cindex multibyte characters
10 @cindex encoding of characters
38 Emacs supports a wide variety of international character sets,
39 including European and Vietnamese variants of the Latin alphabet, as
40 well as Cyrillic, Devanagari (for Hindi and Marathi), Ethiopic, Greek,
41 Han (for Chinese and Japanese), Hangul (for Korean), Hebrew, IPA,
42 Kannada, Lao, Malayalam, Tamil, Thai, Tibetan, and Vietnamese scripts.
43 Emacs also supports various encodings of these characters used by
44 other internationalized software, such as word processors and mailers.
46 Emacs allows editing text with international characters by supporting
47 all the related activities:
51 You can visit files with non-@acronym{ASCII} characters, save non-@acronym{ASCII} text, and
52 pass non-@acronym{ASCII} text between Emacs and programs it invokes (such as
53 compilers, spell-checkers, and mailers). Setting your language
54 environment (@pxref{Language Environments}) takes care of setting up the
55 coding systems and other options for a specific language or culture.
56 Alternatively, you can specify how Emacs should encode or decode text
57 for each command; see @ref{Text Coding}.
60 You can display non-@acronym{ASCII} characters encoded by the various
61 scripts. This works by using appropriate fonts on graphics displays
62 (@pxref{Defining Fontsets}), and by sending special codes to text-only
63 displays (@pxref{Terminal Coding}). If some characters are displayed
64 incorrectly, refer to @ref{Undisplayable Characters}, which describes
65 possible problems and explains how to solve them.
68 You can insert non-@acronym{ASCII} characters or search for them. To do that,
69 you can specify an input method (@pxref{Select Input Method}) suitable
70 for your language, or use the default input method set up when you set
71 your language environment. If
72 your keyboard can produce non-@acronym{ASCII} characters, you can select an
73 appropriate keyboard coding system (@pxref{Terminal Coding}), and Emacs
74 will accept those characters. Latin-1 characters can also be input by
75 using the @kbd{C-x 8} prefix, see @ref{Unibyte Mode}.
77 On X Window systems, your locale should be set to an appropriate value
78 to make sure Emacs interprets keyboard input correctly; see
79 @ref{Language Environments, locales}.
82 The rest of this chapter describes these issues in detail.
85 * International Chars:: Basic concepts of multibyte characters.
86 * Enabling Multibyte:: Controlling whether to use multibyte characters.
87 * Language Environments:: Setting things up for the language you use.
88 * Input Methods:: Entering text characters not on your keyboard.
89 * Select Input Method:: Specifying your choice of input methods.
90 * Multibyte Conversion:: How single-byte characters convert to multibyte.
91 * Coding Systems:: Character set conversion when you read and
92 write files, and so on.
93 * Recognize Coding:: How Emacs figures out which conversion to use.
94 * Specify Coding:: Specifying a file's coding system explicitly.
95 * Output Coding:: Choosing coding systems for output.
96 * Text Coding:: Choosing conversion to use for file text.
97 * Communication Coding:: Coding systems for interprocess communication.
98 * File Name Coding:: Coding systems for file @emph{names}.
99 * Terminal Coding:: Specifying coding systems for converting
100 terminal input and output.
101 * Fontsets:: Fontsets are collections of fonts
102 that cover the whole spectrum of characters.
103 * Defining Fontsets:: Defining a new fontset.
104 * Undisplayable Characters:: When characters don't display.
105 * Unibyte Mode:: You can pick one European character set
106 to use without multibyte characters.
107 * Charsets:: How Emacs groups its internal character codes.
110 @node International Chars
111 @section Introduction to International Character Sets
113 The users of international character sets and scripts have
114 established many more-or-less standard coding systems for storing
115 files. Emacs internally uses a single multibyte character encoding,
116 so that it can intermix characters from all these scripts in a single
117 buffer or string. This encoding represents each non-@acronym{ASCII}
118 character as a sequence of bytes in the range 0200 through 0377.
119 Emacs translates between the multibyte character encoding and various
120 other coding systems when reading and writing files, when exchanging
121 data with subprocesses, and (in some cases) in the @kbd{C-q} command
122 (@pxref{Multibyte Conversion}).
125 @findex view-hello-file
126 @cindex undisplayable characters
127 @cindex @samp{?} in display
128 The command @kbd{C-h h} (@code{view-hello-file}) displays the file
129 @file{etc/HELLO}, which shows how to say ``hello'' in many languages.
130 This illustrates various scripts. If some characters can't be
131 displayed on your terminal, they appear as @samp{?} or as hollow boxes
132 (@pxref{Undisplayable Characters}).
134 Keyboards, even in the countries where these character sets are used,
135 generally don't have keys for all the characters in them. So Emacs
136 supports various @dfn{input methods}, typically one for each script or
137 language, to make it convenient to type them.
140 The prefix key @kbd{C-x @key{RET}} is used for commands that pertain
141 to multibyte characters, coding systems, and input methods.
143 @node Enabling Multibyte
144 @section Enabling Multibyte Characters
146 By default, Emacs starts in multibyte mode, because that allows you to
147 use all the supported languages and scripts without limitations.
149 @cindex turn multibyte support on or off
150 You can enable or disable multibyte character support, either for
151 Emacs as a whole, or for a single buffer. When multibyte characters
152 are disabled in a buffer, we call that @dfn{unibyte mode}. Then each
153 byte in that buffer represents a character, even codes 0200 through
156 The old features for supporting the European character sets, ISO
157 Latin-1 and ISO Latin-2, work in unibyte mode as they did in Emacs 19
158 and also work for the other ISO 8859 character sets. However, there
159 is no need to turn off multibyte character support to use ISO Latin;
160 the Emacs multibyte character set includes all the characters in these
161 character sets, and Emacs can translate automatically to and from the
164 To edit a particular file in unibyte representation, visit it using
165 @code{find-file-literally}. @xref{Visiting}. To convert a buffer in
166 multibyte representation into a single-byte representation of the same
167 characters, the easiest way is to save the contents in a file, kill the
168 buffer, and find the file again with @code{find-file-literally}. You
169 can also use @kbd{C-x @key{RET} c}
170 (@code{universal-coding-system-argument}) and specify @samp{raw-text} as
171 the coding system with which to find or save a file. @xref{Text
172 Coding}. Finding a file as @samp{raw-text} doesn't disable format
173 conversion, uncompression and auto mode selection as
174 @code{find-file-literally} does.
176 @vindex enable-multibyte-characters
177 @vindex default-enable-multibyte-characters
178 To turn off multibyte character support by default, start Emacs with
179 the @samp{--unibyte} option (@pxref{Initial Options}), or set the
180 environment variable @env{EMACS_UNIBYTE}. You can also customize
181 @code{enable-multibyte-characters} or, equivalently, directly set the
182 variable @code{default-enable-multibyte-characters} to @code{nil} in
183 your init file to have basically the same effect as @samp{--unibyte}.
185 @findex toggle-enable-multibyte-characters
186 To convert a unibyte session to a multibyte session, set
187 @code{default-enable-multibyte-characters} to @code{t}. Buffers which
188 were created in the unibyte session before you turn on multibyte support
189 will stay unibyte. You can turn on multibyte support in a specific
190 buffer by invoking the command @code{toggle-enable-multibyte-characters}
193 @cindex Lisp files, and multibyte operation
194 @cindex multibyte operation, and Lisp files
195 @cindex unibyte operation, and Lisp files
196 @cindex init file, and non-@acronym{ASCII} characters
197 @cindex environment variables, and non-@acronym{ASCII} characters
198 With @samp{--unibyte}, multibyte strings are not created during
199 initialization from the values of environment variables,
200 @file{/etc/passwd} entries etc.@: that contain non-@acronym{ASCII} 8-bit
203 Emacs normally loads Lisp files as multibyte, regardless of whether
204 you used @samp{--unibyte}. This includes the Emacs initialization file,
205 @file{.emacs}, and the initialization files of Emacs packages such as
206 Gnus. However, you can specify unibyte loading for a particular Lisp
207 file, by putting @w{@samp{-*-unibyte: t;-*-}} in a comment on the first
208 line (@pxref{File Variables}). Then that file is always loaded as
209 unibyte text, even if you did not start Emacs with @samp{--unibyte}.
210 The motivation for these conventions is that it is more reliable to
211 always load any particular Lisp file in the same way. However, you can
212 load a Lisp file as unibyte, on any one occasion, by typing @kbd{C-x
213 @key{RET} c raw-text @key{RET}} immediately before loading it.
215 The mode line indicates whether multibyte character support is
216 enabled in the current buffer. If it is, there are two or more
217 characters (most often two dashes) near the beginning of the mode
218 line, before the indication of the visited file's end-of-line
219 convention (colon, backslash, etc.). When multibyte characters
220 are not enabled, nothing precedes the colon except a single dash.
221 @xref{Mode Line}, for more details about this.
223 @node Language Environments
224 @section Language Environments
225 @cindex language environments
227 All supported character sets are supported in Emacs buffers whenever
228 multibyte characters are enabled; there is no need to select a
229 particular language in order to display its characters in an Emacs
230 buffer. However, it is important to select a @dfn{language environment}
231 in order to set various defaults. The language environment really
232 represents a choice of preferred script (more or less) rather than a
235 The language environment controls which coding systems to recognize
236 when reading text (@pxref{Recognize Coding}). This applies to files,
237 incoming mail, netnews, and any other text you read into Emacs. It may
238 also specify the default coding system to use when you create a file.
239 Each language environment also specifies a default input method.
241 @findex set-language-environment
242 @vindex current-language-environment
243 To select a language environment, you can customize the variable
244 @code{current-language-environment} or use the command @kbd{M-x
245 set-language-environment}. It makes no difference which buffer is
246 current when you use this command, because the effects apply globally to
247 the Emacs session. The supported language environments include:
252 ASCII, Belarusian, Brazilian Portuguese, Bulgarian, Chinese-BIG5,
253 Chinese-CNS, Chinese-EUC-TW, Chinese-GB, Croatian, Cyrillic-ALT,
254 Cyrillic-ISO, Cyrillic-KOI8, Czech, Devanagari, Dutch, English,
255 Esperanto, Ethiopic, French, Georgian, German, Greek, Hebrew, IPA,
256 Italian, Japanese, Kannada, Korean, Lao, Latin-1, Latin-2, Latin-3,
257 Latin-4, Latin-5, Latin-6, Latin-7, Latin-8 (Celtic), Latin-9 (updated
258 Latin-1 with the Euro sign), Latvian, Lithuanian, Malayalam, Polish,
259 Romanian, Russian, Slovak, Slovenian, Spanish, Swedish, Tajik, Tamil,
260 Thai, Tibetan, Turkish, UTF-8 (for a setup which prefers Unicode
261 characters and files encoded in UTF-8), Ukrainian, Vietnamese, Welsh,
262 and Windows-1255 (for a setup which prefers Cyrillic characters and
263 files encoded in Windows-1255).
266 @cindex fonts for various scripts
267 @cindex Intlfonts package, installation
268 To display the script(s) used by your language environment on a
269 graphical display, you need to have a suitable font. If some of the
270 characters appear as empty boxes, you should install the GNU Intlfonts
271 package, which includes fonts for most supported scripts.@footnote{If
272 you run Emacs on X, you need to inform the X server about the location
273 of the newly installed fonts with the following commands:
276 xset fp+ /usr/local/share/emacs/fonts
280 @xref{Fontsets}, for more details about setting up your fonts.
282 @findex set-locale-environment
283 @vindex locale-language-names
284 @vindex locale-charset-language-names
286 Some operating systems let you specify the character-set locale you
287 are using by setting the locale environment variables @env{LC_ALL},
288 @env{LC_CTYPE}, or @env{LANG}.@footnote{If more than one of these is
289 set, the first one that is nonempty specifies your locale for this
290 purpose.} During startup, Emacs looks up your character-set locale's
291 name in the system locale alias table, matches its canonical name
292 against entries in the value of the variables
293 @code{locale-charset-language-names} and @code{locale-language-names},
294 and selects the corresponding language environment if a match is found.
295 (The former variable overrides the latter.) It also adjusts the display
296 table and terminal coding system, the locale coding system, the
297 preferred coding system as needed for the locale, and---last but not
298 least---the way Emacs decodes non-@acronym{ASCII} characters sent by your keyboard.
300 If you modify the @env{LC_ALL}, @env{LC_CTYPE}, or @env{LANG}
301 environment variables while running Emacs, you may want to invoke the
302 @code{set-locale-environment} function afterwards to readjust the
303 language environment from the new locale.
305 @vindex locale-preferred-coding-systems
306 The @code{set-locale-environment} function normally uses the preferred
307 coding system established by the language environment to decode system
308 messages. But if your locale matches an entry in the variable
309 @code{locale-preferred-coding-systems}, Emacs uses the corresponding
310 coding system instead. For example, if the locale @samp{ja_JP.PCK}
311 matches @code{japanese-shift-jis} in
312 @code{locale-preferred-coding-systems}, Emacs uses that encoding even
313 though it might normally use @code{japanese-iso-8bit}.
315 You can override the language environment chosen at startup with
316 explicit use of the command @code{set-language-environment}, or with
317 customization of @code{current-language-environment} in your init
321 @findex describe-language-environment
322 To display information about the effects of a certain language
323 environment @var{lang-env}, use the command @kbd{C-h L @var{lang-env}
324 @key{RET}} (@code{describe-language-environment}). This tells you
325 which languages this language environment is useful for, and lists the
326 character sets, coding systems, and input methods that go with it. It
327 also shows some sample text to illustrate scripts used in this
328 language environment. If you give an empty input for @var{lang-env},
329 this command describes the chosen language environment.
331 @vindex set-language-environment-hook
332 You can customize any language environment with the normal hook
333 @code{set-language-environment-hook}. The command
334 @code{set-language-environment} runs that hook after setting up the new
335 language environment. The hook functions can test for a specific
336 language environment by checking the variable
337 @code{current-language-environment}. This hook is where you should
338 put non-default settings for specific language environment, such as
339 coding systems for keyboard input and terminal output, the default
342 @vindex exit-language-environment-hook
343 Before it starts to set up the new language environment,
344 @code{set-language-environment} first runs the hook
345 @code{exit-language-environment-hook}. This hook is useful for undoing
346 customizations that were made with @code{set-language-environment-hook}.
347 For instance, if you set up a special key binding in a specific language
348 environment using @code{set-language-environment-hook}, you should set
349 up @code{exit-language-environment-hook} to restore the normal binding
353 @section Input Methods
355 @cindex input methods
356 An @dfn{input method} is a kind of character conversion designed
357 specifically for interactive input. In Emacs, typically each language
358 has its own input method; sometimes several languages which use the same
359 characters can share one input method. A few languages support several
362 The simplest kind of input method works by mapping @acronym{ASCII} letters
363 into another alphabet; this allows you to use one other alphabet
364 instead of @acronym{ASCII}. The Greek and Russian input methods
367 A more powerful technique is composition: converting sequences of
368 characters into one letter. Many European input methods use composition
369 to produce a single non-@acronym{ASCII} letter from a sequence that consists of a
370 letter followed by accent characters (or vice versa). For example, some
371 methods convert the sequence @kbd{a'} into a single accented letter.
372 These input methods have no special commands of their own; all they do
373 is compose sequences of printing characters.
375 The input methods for syllabic scripts typically use mapping followed
376 by composition. The input methods for Thai and Korean work this way.
377 First, letters are mapped into symbols for particular sounds or tone
378 marks; then, sequences of these which make up a whole syllable are
379 mapped into one syllable sign.
381 Chinese and Japanese require more complex methods. In Chinese input
382 methods, first you enter the phonetic spelling of a Chinese word (in
383 input method @code{chinese-py}, among others), or a sequence of
384 portions of the character (input methods @code{chinese-4corner} and
385 @code{chinese-sw}, and others). One input sequence typically
386 corresponds to many possible Chinese characters. You select the one
387 you mean using keys such as @kbd{C-f}, @kbd{C-b}, @kbd{C-n},
388 @kbd{C-p}, and digits, which have special meanings in this situation.
390 The possible characters are conceptually arranged in several rows,
391 with each row holding up to 10 alternatives. Normally, Emacs displays
392 just one row at a time, in the echo area; @code{(@var{i}/@var{j})}
393 appears at the beginning, to indicate that this is the @var{i}th row
394 out of a total of @var{j} rows. Type @kbd{C-n} or @kbd{C-p} to
395 display the next row or the previous row.
397 Type @kbd{C-f} and @kbd{C-b} to move forward and backward among
398 the alternatives in the current row. As you do this, Emacs highlights
399 the current alternative with a special color; type @code{C-@key{SPC}}
400 to select the current alternative and use it as input. The
401 alternatives in the row are also numbered; the number appears before
402 the alternative. Typing a digit @var{n} selects the @var{n}th
403 alternative of the current row and uses it as input.
405 @key{TAB} in these Chinese input methods displays a buffer showing
406 all the possible characters at once; then clicking @kbd{Mouse-2} on
407 one of them selects that alternative. The keys @kbd{C-f}, @kbd{C-b},
408 @kbd{C-n}, @kbd{C-p}, and digits continue to work as usual, but they
409 do the highlighting in the buffer showing the possible characters,
410 rather than in the echo area.
412 In Japanese input methods, first you input a whole word using
413 phonetic spelling; then, after the word is in the buffer, Emacs
414 converts it into one or more characters using a large dictionary. One
415 phonetic spelling corresponds to a number of different Japanese words;
416 to select one of them, use @kbd{C-n} and @kbd{C-p} to cycle through
419 Sometimes it is useful to cut off input method processing so that the
420 characters you have just entered will not combine with subsequent
421 characters. For example, in input method @code{latin-1-postfix}, the
422 sequence @kbd{e '} combines to form an @samp{e} with an accent. What if
423 you want to enter them as separate characters?
425 One way is to type the accent twice; this is a special feature for
426 entering the separate letter and accent. For example, @kbd{e ' '} gives
427 you the two characters @samp{e'}. Another way is to type another letter
428 after the @kbd{e}---something that won't combine with that---and
429 immediately delete it. For example, you could type @kbd{e e @key{DEL}
430 '} to get separate @samp{e} and @samp{'}.
432 Another method, more general but not quite as easy to type, is to use
433 @kbd{C-\ C-\} between two characters to stop them from combining. This
434 is the command @kbd{C-\} (@code{toggle-input-method}) used twice.
436 @xref{Select Input Method}.
439 @cindex incremental search, input method interference
440 @kbd{C-\ C-\} is especially useful inside an incremental search,
441 because it stops waiting for more characters to combine, and starts
442 searching for what you have already entered.
444 To find out how to input the character after point using the current
445 input method, type @kbd{C-u C-x =}. @xref{Position Info}.
447 @vindex input-method-verbose-flag
448 @vindex input-method-highlight-flag
449 The variables @code{input-method-highlight-flag} and
450 @code{input-method-verbose-flag} control how input methods explain
451 what is happening. If @code{input-method-highlight-flag} is
452 non-@code{nil}, the partial sequence is highlighted in the buffer (for
453 most input methods---some disable this feature). If
454 @code{input-method-verbose-flag} is non-@code{nil}, the list of
455 possible characters to type next is displayed in the echo area (but
456 not when you are in the minibuffer).
458 @node Select Input Method
459 @section Selecting an Input Method
463 Enable or disable use of the selected input method.
465 @item C-x @key{RET} C-\ @var{method} @key{RET}
466 Select a new input method for the current buffer.
468 @item C-h I @var{method} @key{RET}
469 @itemx C-h C-\ @var{method} @key{RET}
470 @findex describe-input-method
473 Describe the input method @var{method} (@code{describe-input-method}).
474 By default, it describes the current input method (if any). This
475 description should give you the full details of how to use any
476 particular input method.
478 @item M-x list-input-methods
479 Display a list of all the supported input methods.
482 @findex set-input-method
483 @vindex current-input-method
485 To choose an input method for the current buffer, use @kbd{C-x
486 @key{RET} C-\} (@code{set-input-method}). This command reads the
487 input method name from the minibuffer; the name normally starts with the
488 language environment that it is meant to be used with. The variable
489 @code{current-input-method} records which input method is selected.
491 @findex toggle-input-method
493 Input methods use various sequences of @acronym{ASCII} characters to
494 stand for non-@acronym{ASCII} characters. Sometimes it is useful to
495 turn off the input method temporarily. To do this, type @kbd{C-\}
496 (@code{toggle-input-method}). To reenable the input method, type
499 If you type @kbd{C-\} and you have not yet selected an input method,
500 it prompts for you to specify one. This has the same effect as using
501 @kbd{C-x @key{RET} C-\} to specify an input method.
503 When invoked with a numeric argument, as in @kbd{C-u C-\},
504 @code{toggle-input-method} always prompts you for an input method,
505 suggesting the most recently selected one as the default.
507 @vindex default-input-method
508 Selecting a language environment specifies a default input method for
509 use in various buffers. When you have a default input method, you can
510 select it in the current buffer by typing @kbd{C-\}. The variable
511 @code{default-input-method} specifies the default input method
512 (@code{nil} means there is none).
514 In some language environments, which support several different input
515 methods, you might want to use an input method different from the
516 default chosen by @code{set-language-environment}. You can instruct
517 Emacs to select a different default input method for a certain
518 language environment, if you wish, by using
519 @code{set-language-environment-hook} (@pxref{Language Environments,
520 set-language-environment-hook}). For example:
523 (defun my-chinese-setup ()
524 "Set up my private Chinese environment."
525 (if (equal current-language-environment "Chinese-GB")
526 (setq default-input-method "chinese-tonepy")))
527 (add-hook 'set-language-environment-hook 'my-chinese-setup)
531 This sets the default input method to be @code{chinese-tonepy}
532 whenever you choose a Chinese-GB language environment.
534 @findex quail-set-keyboard-layout
535 Some input methods for alphabetic scripts work by (in effect)
536 remapping the keyboard to emulate various keyboard layouts commonly used
537 for those scripts. How to do this remapping properly depends on your
538 actual keyboard layout. To specify which layout your keyboard has, use
539 the command @kbd{M-x quail-set-keyboard-layout}.
541 @findex quail-show-key
542 You can use the command @kbd{M-x quail-show-key} to show what key (or
543 key sequence) to type in order to input the character following point,
544 using the selected keyboard layout. The command @kbd{C-u C-x =} also
545 shows that information in addition to the other information about the
548 @findex list-input-methods
549 To see a list of all the supported input methods, type @kbd{M-x
550 list-input-methods}. The list gives information about each input
551 method, including the string that stands for it in the mode line.
553 @node Multibyte Conversion
554 @section Unibyte and Multibyte Non-@acronym{ASCII} characters
556 When multibyte characters are enabled, character codes 0240 (octal)
557 through 0377 (octal) are not really legitimate in the buffer. The valid
558 non-@acronym{ASCII} printing characters have codes that start from 0400.
560 If you type a self-inserting character in the range 0240 through
561 0377, or if you use @kbd{C-q} to insert one, Emacs assumes you
562 intended to use one of the ISO Latin-@var{n} character sets, and
563 converts it to the Emacs code representing that Latin-@var{n}
564 character. You select @emph{which} ISO Latin character set to use
565 through your choice of language environment
570 (@pxref{Language Environments}).
572 If you do not specify a choice, the default is Latin-1.
574 If you insert a character in the range 0200 through 0237, which
575 forms the @code{eight-bit-control} character set, it is inserted
576 literally. You should normally avoid doing this since buffers
577 containing such characters have to be written out in either the
578 @code{emacs-mule} or @code{raw-text} coding system, which is usually
582 @section Coding Systems
583 @cindex coding systems
585 Users of various languages have established many more-or-less standard
586 coding systems for representing them. Emacs does not use these coding
587 systems internally; instead, it converts from various coding systems to
588 its own system when reading data, and converts the internal coding
589 system to other coding systems when writing data. Conversion is
590 possible in reading or writing files, in sending or receiving from the
591 terminal, and in exchanging data with subprocesses.
593 Emacs assigns a name to each coding system. Most coding systems are
594 used for one language, and the name of the coding system starts with the
595 language name. Some coding systems are used for several languages;
596 their names usually start with @samp{iso}. There are also special
597 coding systems @code{no-conversion}, @code{raw-text} and
598 @code{emacs-mule} which do not convert printing characters at all.
600 @cindex international files from DOS/Windows systems
601 A special class of coding systems, collectively known as
602 @dfn{codepages}, is designed to support text encoded by MS-Windows and
603 MS-DOS software. The names of these coding systems are
604 @code{cp@var{nnnn}}, where @var{nnnn} is a 3- or 4-digit number of the
605 codepage. You can use these encodings just like any other coding
606 system; for example, to visit a file encoded in codepage 850, type
607 @kbd{C-x @key{RET} c cp850 @key{RET} C-x C-f @var{filename}
609 In the MS-DOS port of Emacs, you need to create a @code{cp@var{nnn}}
610 coding system with @kbd{M-x codepage-setup}, before you can use it.
612 @xref{MS-DOS and MULE,,,emacs-extra,Specialized Emacs Features}.
615 @xref{MS-DOS and MULE}.
619 In addition to converting various representations of non-@acronym{ASCII}
620 characters, a coding system can perform end-of-line conversion. Emacs
621 handles three different conventions for how to separate lines in a file:
622 newline, carriage-return linefeed, and just carriage-return.
625 @item C-h C @var{coding} @key{RET}
626 Describe coding system @var{coding}.
628 @item C-h C @key{RET}
629 Describe the coding systems currently in use.
631 @item M-x list-coding-systems
632 Display a list of all the supported coding systems.
636 @findex describe-coding-system
637 The command @kbd{C-h C} (@code{describe-coding-system}) displays
638 information about particular coding systems, including the end-of-line
639 conversion specified by those coding systems. You can specify a coding
640 system name as the argument; alternatively, with an empty argument, it
641 describes the coding systems currently selected for various purposes,
642 both in the current buffer and as the defaults, and the priority list
643 for recognizing coding systems (@pxref{Recognize Coding}).
645 @findex list-coding-systems
646 To display a list of all the supported coding systems, type @kbd{M-x
647 list-coding-systems}. The list gives information about each coding
648 system, including the letter that stands for it in the mode line
651 @cindex end-of-line conversion
653 @cindex MS-DOS end-of-line conversion
654 @cindex Macintosh end-of-line conversion
655 Each of the coding systems that appear in this list---except for
656 @code{no-conversion}, which means no conversion of any kind---specifies
657 how and whether to convert printing characters, but leaves the choice of
658 end-of-line conversion to be decided based on the contents of each file.
659 For example, if the file appears to use the sequence carriage-return
660 linefeed to separate lines, DOS end-of-line conversion will be used.
662 Each of the listed coding systems has three variants which specify
663 exactly what to do for end-of-line conversion:
667 Don't do any end-of-line conversion; assume the file uses
668 newline to separate lines. (This is the convention normally used
669 on Unix and GNU systems.)
672 Assume the file uses carriage-return linefeed to separate lines, and do
673 the appropriate conversion. (This is the convention normally used on
674 Microsoft systems.@footnote{It is also specified for MIME @samp{text/*}
675 bodies and in other network transport contexts. It is different
676 from the SGML reference syntax record-start/record-end format which
677 Emacs doesn't support directly.})
680 Assume the file uses carriage-return to separate lines, and do the
681 appropriate conversion. (This is the convention normally used on the
685 These variant coding systems are omitted from the
686 @code{list-coding-systems} display for brevity, since they are entirely
687 predictable. For example, the coding system @code{iso-latin-1} has
688 variants @code{iso-latin-1-unix}, @code{iso-latin-1-dos} and
689 @code{iso-latin-1-mac}.
691 @cindex @code{undecided}, coding system
692 The coding systems @code{unix}, @code{dos}, and @code{mac} are
693 aliases for @code{undecided-unix}, @code{undecided-dos}, and
694 @code{undecided-mac}, respectively. These coding systems specify only
695 the end-of-line conversion, and leave the character code conversion to
696 be deduced from the text itself.
698 The coding system @code{raw-text} is good for a file which is mainly
699 @acronym{ASCII} text, but may contain byte values above 127 which are
700 not meant to encode non-@acronym{ASCII} characters. With
701 @code{raw-text}, Emacs copies those byte values unchanged, and sets
702 @code{enable-multibyte-characters} to @code{nil} in the current buffer
703 so that they will be interpreted properly. @code{raw-text} handles
704 end-of-line conversion in the usual way, based on the data
705 encountered, and has the usual three variants to specify the kind of
706 end-of-line conversion to use.
708 In contrast, the coding system @code{no-conversion} specifies no
709 character code conversion at all---none for non-@acronym{ASCII} byte values and
710 none for end of line. This is useful for reading or writing binary
711 files, tar files, and other files that must be examined verbatim. It,
712 too, sets @code{enable-multibyte-characters} to @code{nil}.
714 The easiest way to edit a file with no conversion of any kind is with
715 the @kbd{M-x find-file-literally} command. This uses
716 @code{no-conversion}, and also suppresses other Emacs features that
717 might convert the file contents before you see them. @xref{Visiting}.
719 The coding system @code{emacs-mule} means that the file contains
720 non-@acronym{ASCII} characters stored with the internal Emacs encoding. It
721 handles end-of-line conversion based on the data encountered, and has
722 the usual three variants to specify the kind of end-of-line conversion.
724 @findex unify-8859-on-decoding-mode
725 @anchor{Character Translation}
726 The @dfn{character translation} feature can modify the effect of
727 various coding systems, by changing the internal Emacs codes that
728 decoding produces. For instance, the command
729 @code{unify-8859-on-decoding-mode} enables a mode that ``unifies'' the
730 Latin alphabets when decoding text. This works by converting all
731 non-@acronym{ASCII} Latin-@var{n} characters to either Latin-1 or
732 Unicode characters. This way it is easier to use various
733 Latin-@var{n} alphabets together. (In a future Emacs version we hope
734 to move towards full Unicode support and complete unification of
737 @vindex enable-character-translation
738 If you set the variable @code{enable-character-translation} to
739 @code{nil}, that disables all character translation (including
740 @code{unify-8859-on-decoding-mode}).
742 @node Recognize Coding
743 @section Recognizing Coding Systems
745 Emacs tries to recognize which coding system to use for a given text
746 as an integral part of reading that text. (This applies to files
747 being read, output from subprocesses, text from X selections, etc.)
748 Emacs can select the right coding system automatically most of the
749 time---once you have specified your preferences.
751 Some coding systems can be recognized or distinguished by which byte
752 sequences appear in the data. However, there are coding systems that
753 cannot be distinguished, not even potentially. For example, there is no
754 way to distinguish between Latin-1 and Latin-2; they use the same byte
755 values with different meanings.
757 Emacs handles this situation by means of a priority list of coding
758 systems. Whenever Emacs reads a file, if you do not specify the coding
759 system to use, Emacs checks the data against each coding system,
760 starting with the first in priority and working down the list, until it
761 finds a coding system that fits the data. Then it converts the file
762 contents assuming that they are represented in this coding system.
764 The priority list of coding systems depends on the selected language
765 environment (@pxref{Language Environments}). For example, if you use
766 French, you probably want Emacs to prefer Latin-1 to Latin-2; if you use
767 Czech, you probably want Latin-2 to be preferred. This is one of the
768 reasons to specify a language environment.
770 @findex prefer-coding-system
771 However, you can alter the coding system priority list in detail
772 with the command @kbd{M-x prefer-coding-system}. This command reads
773 the name of a coding system from the minibuffer, and adds it to the
774 front of the priority list, so that it is preferred to all others. If
775 you use this command several times, each use adds one element to the
776 front of the priority list.
778 If you use a coding system that specifies the end-of-line conversion
779 type, such as @code{iso-8859-1-dos}, what this means is that Emacs
780 should attempt to recognize @code{iso-8859-1} with priority, and should
781 use DOS end-of-line conversion when it does recognize @code{iso-8859-1}.
783 @vindex file-coding-system-alist
784 Sometimes a file name indicates which coding system to use for the
785 file. The variable @code{file-coding-system-alist} specifies this
786 correspondence. There is a special function
787 @code{modify-coding-system-alist} for adding elements to this list. For
788 example, to read and write all @samp{.txt} files using the coding system
789 @code{chinese-iso-8bit}, you can execute this Lisp expression:
792 (modify-coding-system-alist 'file "\\.txt\\'" 'chinese-iso-8bit)
796 The first argument should be @code{file}, the second argument should be
797 a regular expression that determines which files this applies to, and
798 the third argument says which coding system to use for these files.
800 @vindex inhibit-eol-conversion
801 @cindex DOS-style end-of-line display
802 Emacs recognizes which kind of end-of-line conversion to use based on
803 the contents of the file: if it sees only carriage-returns, or only
804 carriage-return linefeed sequences, then it chooses the end-of-line
805 conversion accordingly. You can inhibit the automatic use of
806 end-of-line conversion by setting the variable @code{inhibit-eol-conversion}
807 to non-@code{nil}. If you do that, DOS-style files will be displayed
808 with the @samp{^M} characters visible in the buffer; some people
809 prefer this to the more subtle @samp{(DOS)} end-of-line type
810 indication near the left edge of the mode line (@pxref{Mode Line,
813 @vindex inhibit-iso-escape-detection
814 @cindex escape sequences in files
815 By default, the automatic detection of coding system is sensitive to
816 escape sequences. If Emacs sees a sequence of characters that begin
817 with an escape character, and the sequence is valid as an ISO-2022
818 code, that tells Emacs to use one of the ISO-2022 encodings to decode
821 However, there may be cases that you want to read escape sequences
822 in a file as is. In such a case, you can set the variable
823 @code{inhibit-iso-escape-detection} to non-@code{nil}. Then the code
824 detection ignores any escape sequences, and never uses an ISO-2022
825 encoding. The result is that all escape sequences become visible in
828 The default value of @code{inhibit-iso-escape-detection} is
829 @code{nil}. We recommend that you not change it permanently, only for
830 one specific operation. That's because many Emacs Lisp source files
831 in the Emacs distribution contain non-@acronym{ASCII} characters encoded in the
832 coding system @code{iso-2022-7bit}, and they won't be
833 decoded correctly when you visit those files if you suppress the
834 escape sequence detection.
836 @vindex auto-coding-alist
837 @vindex auto-coding-regexp-alist
838 @vindex auto-coding-functions
839 The variables @code{auto-coding-alist},
840 @code{auto-coding-regexp-alist} and @code{auto-coding-functions} are
841 the strongest way to specify the coding system for certain patterns of
842 file names, or for files containing certain patterns; these variables
843 even override @samp{-*-coding:-*-} tags in the file itself. Emacs
844 uses @code{auto-coding-alist} for tar and archive files, to prevent it
845 from being confused by a @samp{-*-coding:-*-} tag in a member of the
846 archive and thinking it applies to the archive file as a whole.
847 Likewise, Emacs uses @code{auto-coding-regexp-alist} to ensure that
848 RMAIL files, whose names in general don't match any particular
849 pattern, are decoded correctly. One of the builtin
850 @code{auto-coding-functions} detects the encoding for XML files.
852 @vindex rmail-decode-mime-charset
853 When you get new mail in Rmail, each message is translated
854 automatically from the coding system it is written in, as if it were a
855 separate file. This uses the priority list of coding systems that you
856 have specified. If a MIME message specifies a character set, Rmail
857 obeys that specification, unless @code{rmail-decode-mime-charset} is
860 @vindex rmail-file-coding-system
861 For reading and saving Rmail files themselves, Emacs uses the coding
862 system specified by the variable @code{rmail-file-coding-system}. The
863 default value is @code{nil}, which means that Rmail files are not
864 translated (they are read and written in the Emacs internal character
868 @section Specifying a File's Coding System
870 If Emacs recognizes the encoding of a file incorrectly, you can
871 reread the file using the correct coding system by typing @kbd{C-x
872 @key{RET} r @var{coding-system} @key{RET}}. To see what coding system
873 Emacs actually used to decode the file, look at the coding system
874 mnemonic letter near the left edge of the mode line (@pxref{Mode
875 Line}), or type @kbd{C-h C @key{RET}}.
878 You can specify the coding system for a particular file in the file
879 itself, using the @w{@samp{-*-@dots{}-*-}} construct at the beginning,
880 or a local variables list at the end (@pxref{File Variables}). You do
881 this by defining a value for the ``variable'' named @code{coding}.
882 Emacs does not really have a variable @code{coding}; instead of
883 setting a variable, this uses the specified coding system for the
884 file. For example, @samp{-*-mode: C; coding: latin-1;-*-} specifies
885 use of the Latin-1 coding system, as well as C mode. When you specify
886 the coding explicitly in the file, that overrides
887 @code{file-coding-system-alist}.
889 If you add the character @samp{!} at the end of the coding system
890 name in @code{coding}, it disables any character translation
891 (@pxref{Character Translation}) while decoding the file. This is
892 useful when you need to make sure that the character codes in the
893 Emacs buffer will not vary due to changes in user settings; for
894 instance, for the sake of strings in Emacs Lisp source files.
897 @section Choosing Coding Systems for Output
899 @vindex buffer-file-coding-system
900 Once Emacs has chosen a coding system for a buffer, it stores that
901 coding system in @code{buffer-file-coding-system}. That makes it the
902 default for operations that write from this buffer into a file, such
903 as @code{save-buffer} and @code{write-region}. You can specify a
904 different coding system for further file output from the buffer using
905 @code{set-buffer-file-coding-system} (@pxref{Text Coding}).
907 You can insert any character Emacs supports into any Emacs buffer,
908 but most coding systems can only handle a subset of these characters.
909 Therefore, you can insert characters that cannot be encoded with the
910 coding system that will be used to save the buffer. For example, you
911 could start with an @acronym{ASCII} file and insert a few Latin-1
912 characters into it, or you could edit a text file in Polish encoded in
913 @code{iso-8859-2} and add some Russian words to it. When you save
914 that buffer, Emacs cannot use the current value of
915 @code{buffer-file-coding-system}, because the characters you added
916 cannot be encoded by that coding system.
918 When that happens, Emacs tries the most-preferred coding system (set
919 by @kbd{M-x prefer-coding-system} or @kbd{M-x
920 set-language-environment}), and if that coding system can safely
921 encode all of the characters in the buffer, Emacs uses it, and stores
922 its value in @code{buffer-file-coding-system}. Otherwise, Emacs
923 displays a list of coding systems suitable for encoding the buffer's
924 contents, and asks you to choose one of those coding systems.
926 If you insert the unsuitable characters in a mail message, Emacs
927 behaves a bit differently. It additionally checks whether the
928 most-preferred coding system is recommended for use in MIME messages;
929 if not, Emacs tells you that the most-preferred coding system is not
930 recommended and prompts you for another coding system. This is so you
931 won't inadvertently send a message encoded in a way that your
932 recipient's mail software will have difficulty decoding. (You can
933 still use an unsuitable coding system if you type its name in response
936 @vindex sendmail-coding-system
937 When you send a message with Mail mode (@pxref{Sending Mail}), Emacs has
938 four different ways to determine the coding system to use for encoding
939 the message text. It tries the buffer's own value of
940 @code{buffer-file-coding-system}, if that is non-@code{nil}. Otherwise,
941 it uses the value of @code{sendmail-coding-system}, if that is
942 non-@code{nil}. The third way is to use the default coding system for
943 new files, which is controlled by your choice of language environment,
944 if that is non-@code{nil}. If all of these three values are @code{nil},
945 Emacs encodes outgoing mail using the Latin-1 coding system.
948 @section Specifying a Coding System for File Text
950 In cases where Emacs does not automatically choose the right coding
951 system for a file's contents, you can use these commands to specify
955 @item C-x @key{RET} f @var{coding} @key{RET}
956 Use coding system @var{coding} for saving or revisiting the visited
957 file in the current buffer.
959 @item C-x @key{RET} c @var{coding} @key{RET}
960 Specify coding system @var{coding} for the immediately following
963 @item C-x @key{RET} r @var{coding} @key{RET}
964 Revisit the current file using the coding system @var{coding}.
966 @item M-x recode-region @key{RET} @var{right} @key{RET} @var{wrong} @key{RET}
967 Convert a region that was decoded using coding system @var{wrong},
968 decoding it using coding system @var{right} instead.
972 @findex set-buffer-file-coding-system
973 The command @kbd{C-x @key{RET} f}
974 (@code{set-buffer-file-coding-system}) sets the file coding system for
975 the current buffer---in other words, it says which coding system to
976 use when saving or reverting the visited file. You specify which
977 coding system using the minibuffer. If you specify a coding system
978 that cannot handle all of the characters in the buffer, Emacs warns
979 you about the troublesome characters when you actually save the
982 @cindex specify end-of-line conversion
983 You can also use this command to specify the end-of-line conversion
984 (@pxref{Coding Systems, end-of-line conversion}) for encoding the
985 current buffer. For example, @kbd{C-x @key{RET} f dos @key{RET}} will
986 cause Emacs to save the current buffer's text with DOS-style CRLF line
990 @findex universal-coding-system-argument
991 Another way to specify the coding system for a file is when you visit
992 the file. First use the command @kbd{C-x @key{RET} c}
993 (@code{universal-coding-system-argument}); this command uses the
994 minibuffer to read a coding system name. After you exit the minibuffer,
995 the specified coding system is used for @emph{the immediately following
998 So if the immediately following command is @kbd{C-x C-f}, for example,
999 it reads the file using that coding system (and records the coding
1000 system for when you later save the file). Or if the immediately following
1001 command is @kbd{C-x C-w}, it writes the file using that coding system.
1002 When you specify the coding system for saving in this way, instead
1003 of with @kbd{C-x @key{RET} f}, there is no warning if the buffer
1004 contains characters that the coding system cannot handle.
1006 Other file commands affected by a specified coding system include
1007 @kbd{C-x i} and @kbd{C-x C-v}, as well as the other-window variants
1008 of @kbd{C-x C-f}. @kbd{C-x @key{RET} c} also affects commands that
1009 start subprocesses, including @kbd{M-x shell} (@pxref{Shell}). If the
1010 immediately following command does not use the coding system, then
1011 @kbd{C-x @key{RET} c} ultimately has no effect.
1013 An easy way to visit a file with no conversion is with the @kbd{M-x
1014 find-file-literally} command. @xref{Visiting}.
1016 @vindex default-buffer-file-coding-system
1017 The variable @code{default-buffer-file-coding-system} specifies the
1018 choice of coding system to use when you create a new file. It applies
1019 when you find a new file, and when you create a buffer and then save it
1020 in a file. Selecting a language environment typically sets this
1021 variable to a good choice of default coding system for that language
1025 @findex revert-buffer-with-coding-system
1026 If you visit a file with a wrong coding system, you can correct this
1027 with @kbd{C-x @key{RET} r} (@code{revert-buffer-with-coding-system}).
1028 This visits the current file again, using a coding system you specify.
1030 @findex recode-region
1031 If a piece of text has already been inserted into a buffer using the
1032 wrong coding system, you can redo the decoding of it using @kbd{M-x
1033 recode-region}. This prompts you for the proper coding system, then
1034 for the wrong coding system that was actually used, and does the
1035 conversion. It first encodes the region using the wrong coding system,
1036 then decodes it again using the proper coding system.
1038 @node Communication Coding
1039 @section Coding Systems for Interprocess Communication
1041 This section explains how to specify coding systems for use
1042 in communication with other processes.
1045 @item C-x @key{RET} x @var{coding} @key{RET}
1046 Use coding system @var{coding} for transferring selections to and from
1047 other window-based applications.
1049 @item C-x @key{RET} X @var{coding} @key{RET}
1050 Use coding system @var{coding} for transferring @emph{one}
1051 selection---the next one---to or from another window-based application.
1053 @item C-x @key{RET} p @var{input-coding} @key{RET} @var{output-coding} @key{RET}
1054 Use coding systems @var{input-coding} and @var{output-coding} for
1055 subprocess input and output in the current buffer.
1057 @item C-x @key{RET} c @var{coding} @key{RET}
1058 Specify coding system @var{coding} for the immediately following
1064 @findex set-selection-coding-system
1065 @findex set-next-selection-coding-system
1066 The command @kbd{C-x @key{RET} x} (@code{set-selection-coding-system})
1067 specifies the coding system for sending selected text to other windowing
1068 applications, and for receiving the text of selections made in other
1069 applications. This command applies to all subsequent selections, until
1070 you override it by using the command again. The command @kbd{C-x
1071 @key{RET} X} (@code{set-next-selection-coding-system}) specifies the
1072 coding system for the next selection made in Emacs or read by Emacs.
1075 @findex set-buffer-process-coding-system
1076 The command @kbd{C-x @key{RET} p} (@code{set-buffer-process-coding-system})
1077 specifies the coding system for input and output to a subprocess. This
1078 command applies to the current buffer; normally, each subprocess has its
1079 own buffer, and thus you can use this command to specify translation to
1080 and from a particular subprocess by giving the command in the
1081 corresponding buffer.
1083 You can also use @kbd{C-x @key{RET} c} just before the command that
1084 runs or starts a subprocess, to specify the coding system to use for
1085 communication with that subprocess.
1087 The default for translation of process input and output depends on the
1088 current language environment.
1090 @vindex locale-coding-system
1091 @cindex decoding non-@acronym{ASCII} keyboard input on X
1092 The variable @code{locale-coding-system} specifies a coding system
1093 to use when encoding and decoding system strings such as system error
1094 messages and @code{format-time-string} formats and time stamps. That
1095 coding system is also used for decoding non-@acronym{ASCII} keyboard input on X
1096 Window systems. You should choose a coding system that is compatible
1097 with the underlying system's text representation, which is normally
1098 specified by one of the environment variables @env{LC_ALL},
1099 @env{LC_CTYPE}, and @env{LANG}. (The first one, in the order
1100 specified above, whose value is nonempty is the one that determines
1101 the text representation.)
1103 @node File Name Coding
1104 @section Coding Systems for File Names
1107 @item C-x @key{RET} F @var{coding} @key{RET}
1108 Use coding system @var{coding} for encoding and decoding file
1112 @vindex file-name-coding-system
1113 @cindex file names with non-@acronym{ASCII} characters
1114 The variable @code{file-name-coding-system} specifies a coding
1115 system to use for encoding file names. It has no effect on reading
1116 and writing the @emph{contents} of files.
1118 @findex set-file-name-coding-system
1119 @kindex C-x @key{RET} F
1120 If you set the variable to a coding system name (as a Lisp symbol or
1121 a string), Emacs encodes file names using that coding system for all
1122 file operations. This makes it possible to use non-@acronym{ASCII}
1123 characters in file names---or, at least, those non-@acronym{ASCII}
1124 characters which the specified coding system can encode. Use @kbd{C-x
1125 @key{RET} F} (@code{set-file-name-coding-system}) to specify this
1128 If @code{file-name-coding-system} is @code{nil}, Emacs uses a
1129 default coding system determined by the selected language environment.
1130 In the default language environment, any non-@acronym{ASCII}
1131 characters in file names are not encoded specially; they appear in the
1132 file system using the internal Emacs representation.
1134 @strong{Warning:} if you change @code{file-name-coding-system} (or the
1135 language environment) in the middle of an Emacs session, problems can
1136 result if you have already visited files whose names were encoded using
1137 the earlier coding system and cannot be encoded (or are encoded
1138 differently) under the new coding system. If you try to save one of
1139 these buffers under the visited file name, saving may use the wrong file
1140 name, or it may get an error. If such a problem happens, use @kbd{C-x
1141 C-w} to specify a new file name for that buffer.
1143 @findex recode-file-name
1144 If a mistake occurs when encoding a file name, use the command
1145 @kbd{M-x recode-file-name} to change the file name's coding
1146 system. This prompts for an existing file name, its old coding
1147 system, and the coding system to which you wish to convert.
1149 @node Terminal Coding
1150 @section Coding Systems for Terminal I/O
1153 @item C-x @key{RET} k @var{coding} @key{RET}
1154 Use coding system @var{coding} for keyboard input.
1156 @item C-x @key{RET} t @var{coding} @key{RET}
1157 Use coding system @var{coding} for terminal output.
1161 @findex set-terminal-coding-system
1162 The command @kbd{C-x @key{RET} t} (@code{set-terminal-coding-system})
1163 specifies the coding system for terminal output. If you specify a
1164 character code for terminal output, all characters output to the
1165 terminal are translated into that coding system.
1167 This feature is useful for certain character-only terminals built to
1168 support specific languages or character sets---for example, European
1169 terminals that support one of the ISO Latin character sets. You need to
1170 specify the terminal coding system when using multibyte text, so that
1171 Emacs knows which characters the terminal can actually handle.
1173 By default, output to the terminal is not translated at all, unless
1174 Emacs can deduce the proper coding system from your terminal type or
1175 your locale specification (@pxref{Language Environments}).
1178 @findex set-keyboard-coding-system
1179 @vindex keyboard-coding-system
1180 The command @kbd{C-x @key{RET} k} (@code{set-keyboard-coding-system})
1181 or the variable @code{keyboard-coding-system} specifies the coding
1182 system for keyboard input. Character-code translation of keyboard
1183 input is useful for terminals with keys that send non-@acronym{ASCII}
1184 graphic characters---for example, some terminals designed for ISO
1185 Latin-1 or subsets of it.
1187 By default, keyboard input is translated based on your system locale
1188 setting. If your terminal does not really support the encoding
1189 implied by your locale (for example, if you find it inserts a
1190 non-@acronym{ASCII} character if you type @kbd{M-i}), you will need to set
1191 @code{keyboard-coding-system} to @code{nil} to turn off encoding.
1192 You can do this by putting
1195 (set-keyboard-coding-system nil)
1199 in your @file{~/.emacs} file.
1201 There is a similarity between using a coding system translation for
1202 keyboard input, and using an input method: both define sequences of
1203 keyboard input that translate into single characters. However, input
1204 methods are designed to be convenient for interactive use by humans, and
1205 the sequences that are translated are typically sequences of @acronym{ASCII}
1206 printing characters. Coding systems typically translate sequences of
1207 non-graphic characters.
1213 A font typically defines shapes for a single alphabet or script.
1214 Therefore, displaying the entire range of scripts that Emacs supports
1215 requires a collection of many fonts. In Emacs, such a collection is
1216 called a @dfn{fontset}. A fontset is defined by a list of fonts, each
1217 assigned to handle a range of character codes.
1219 Each fontset has a name, like a font. However, while fonts are
1220 stored in the system and the available font names are defined by the
1221 system, fontsets are defined within Emacs itself. Once you have
1222 defined a fontset, you can use it within Emacs by specifying its name,
1223 anywhere that you could use a single font. Of course, Emacs fontsets
1224 can use only the fonts that the system supports; if certain characters
1225 appear on the screen as hollow boxes, this means that the fontset in
1226 use for them has no font for those characters.@footnote{The Emacs
1227 installation instructions have information on additional font
1230 Emacs creates two fontsets automatically: the @dfn{standard fontset}
1231 and the @dfn{startup fontset}. The standard fontset is most likely to
1232 have fonts for a wide variety of non-@acronym{ASCII} characters;
1233 however, this is not the default for Emacs to use. (By default, Emacs
1234 tries to find a font that has bold and italic variants.) You can
1235 specify use of the standard fontset with the @samp{-fn} option. For
1239 emacs -fn fontset-standard
1243 You can also specify a fontset with the @samp{Font} resource (@pxref{X
1246 A fontset does not necessarily specify a font for every character
1247 code. If a fontset specifies no font for a certain character, or if it
1248 specifies a font that does not exist on your system, then it cannot
1249 display that character properly. It will display that character as an
1252 @node Defining Fontsets
1253 @section Defining fontsets
1255 @vindex standard-fontset-spec
1256 @cindex standard fontset
1257 Emacs creates a standard fontset automatically according to the value
1258 of @code{standard-fontset-spec}. This fontset's name is
1261 -*-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-standard
1265 or just @samp{fontset-standard} for short.
1267 Bold, italic, and bold-italic variants of the standard fontset are
1268 created automatically. Their names have @samp{bold} instead of
1269 @samp{medium}, or @samp{i} instead of @samp{r}, or both.
1271 @cindex startup fontset
1272 If you specify a default @acronym{ASCII} font with the @samp{Font} resource or
1273 the @samp{-fn} argument, Emacs generates a fontset from it
1274 automatically. This is the @dfn{startup fontset} and its name is
1275 @code{fontset-startup}. It does this by replacing the @var{foundry},
1276 @var{family}, @var{add_style}, and @var{average_width} fields of the
1277 font name with @samp{*}, replacing @var{charset_registry} field with
1278 @samp{fontset}, and replacing @var{charset_encoding} field with
1279 @samp{startup}, then using the resulting string to specify a fontset.
1281 For instance, if you start Emacs this way,
1284 emacs -fn "*courier-medium-r-normal--14-140-*-iso8859-1"
1288 Emacs generates the following fontset and uses it for the initial X
1292 -*-*-medium-r-normal-*-14-140-*-*-*-*-fontset-startup
1295 With the X resource @samp{Emacs.Font}, you can specify a fontset name
1296 just like an actual font name. But be careful not to specify a fontset
1297 name in a wildcard resource like @samp{Emacs*Font}---that wildcard
1298 specification matches various other resources, such as for menus, and
1299 menus cannot handle fontsets.
1301 You can specify additional fontsets using X resources named
1302 @samp{Fontset-@var{n}}, where @var{n} is an integer starting from 0.
1303 The resource value should have this form:
1306 @var{fontpattern}, @r{[}@var{charset}:@var{font}@r{]@dots{}}
1310 @var{fontpattern} should have the form of a standard X font name, except
1311 for the last two fields. They should have the form
1312 @samp{fontset-@var{alias}}.
1314 The fontset has two names, one long and one short. The long name is
1315 @var{fontpattern}. The short name is @samp{fontset-@var{alias}}. You
1316 can refer to the fontset by either name.
1318 The construct @samp{@var{charset}:@var{font}} specifies which font to
1319 use (in this fontset) for one particular character set. Here,
1320 @var{charset} is the name of a character set, and @var{font} is the
1321 font to use for that character set. You can use this construct any
1322 number of times in defining one fontset.
1324 For the other character sets, Emacs chooses a font based on
1325 @var{fontpattern}. It replaces @samp{fontset-@var{alias}} with values
1326 that describe the character set. For the @acronym{ASCII} character font,
1327 @samp{fontset-@var{alias}} is replaced with @samp{ISO8859-1}.
1329 In addition, when several consecutive fields are wildcards, Emacs
1330 collapses them into a single wildcard. This is to prevent use of
1331 auto-scaled fonts. Fonts made by scaling larger fonts are not usable
1332 for editing, and scaling a smaller font is not useful because it is
1333 better to use the smaller font in its own size, which is what Emacs
1336 Thus if @var{fontpattern} is this,
1339 -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24
1343 the font specification for @acronym{ASCII} characters would be this:
1346 -*-fixed-medium-r-normal-*-24-*-ISO8859-1
1350 and the font specification for Chinese GB2312 characters would be this:
1353 -*-fixed-medium-r-normal-*-24-*-gb2312*-*
1356 You may not have any Chinese font matching the above font
1357 specification. Most X distributions include only Chinese fonts that
1358 have @samp{song ti} or @samp{fangsong ti} in @var{family} field. In
1359 such a case, @samp{Fontset-@var{n}} can be specified as below:
1362 Emacs.Fontset-0: -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24,\
1363 chinese-gb2312:-*-*-medium-r-normal-*-24-*-gb2312*-*
1367 Then, the font specifications for all but Chinese GB2312 characters have
1368 @samp{fixed} in the @var{family} field, and the font specification for
1369 Chinese GB2312 characters has a wild card @samp{*} in the @var{family}
1372 @findex create-fontset-from-fontset-spec
1373 The function that processes the fontset resource value to create the
1374 fontset is called @code{create-fontset-from-fontset-spec}. You can also
1375 call this function explicitly to create a fontset.
1377 @xref{Font X}, for more information about font naming in X.
1379 @node Undisplayable Characters
1380 @section Undisplayable Characters
1382 There may be a some non-@acronym{ASCII} characters that your terminal cannot
1383 display. Most text-only terminals support just a single character
1384 set (use the variable @code{default-terminal-coding-system}
1385 (@pxref{Terminal Coding}) to tell Emacs which one); characters which
1386 can't be encoded in that coding system are displayed as @samp{?} by
1389 Graphical displays can display a broader range of characters, but
1390 you may not have fonts installed for all of them; characters that have
1391 no font appear as a hollow box.
1393 If you use Latin-1 characters but your terminal can't display
1394 Latin-1, you can arrange to display mnemonic @acronym{ASCII} sequences
1395 instead, e.g.@: @samp{"o} for o-umlaut. Load the library
1396 @file{iso-ascii} to do this.
1398 @vindex latin1-display
1399 If your terminal can display Latin-1, you can display characters
1400 from other European character sets using a mixture of equivalent
1401 Latin-1 characters and @acronym{ASCII} mnemonics. Customize the variable
1402 @code{latin1-display} to enable this. The mnemonic @acronym{ASCII}
1403 sequences mostly correspond to those of the prefix input methods.
1406 @section Unibyte Editing Mode
1408 @cindex European character sets
1409 @cindex accented characters
1410 @cindex ISO Latin character sets
1411 @cindex Unibyte operation
1412 The ISO 8859 Latin-@var{n} character sets define character codes in
1413 the range 0240 to 0377 octal (160 to 255 decimal) to handle the
1414 accented letters and punctuation needed by various European languages
1415 (and some non-European ones). If you disable multibyte characters,
1416 Emacs can still handle @emph{one} of these character codes at a time.
1417 To specify @emph{which} of these codes to use, invoke @kbd{M-x
1418 set-language-environment} and specify a suitable language environment
1419 such as @samp{Latin-@var{n}}.
1421 For more information about unibyte operation, see @ref{Enabling
1422 Multibyte}. Note particularly that you probably want to ensure that
1423 your initialization files are read as unibyte if they contain
1424 non-@acronym{ASCII} characters.
1426 @vindex unibyte-display-via-language-environment
1427 Emacs can also display those characters, provided the terminal or font
1428 in use supports them. This works automatically. Alternatively, on a
1429 graphical display, Emacs can also display single-byte characters
1430 through fontsets, in effect by displaying the equivalent multibyte
1431 characters according to the current language environment. To request
1432 this, set the variable @code{unibyte-display-via-language-environment}
1433 to a non-@code{nil} value.
1435 @cindex @code{iso-ascii} library
1436 If your terminal does not support display of the Latin-1 character
1437 set, Emacs can display these characters as @acronym{ASCII} sequences which at
1438 least give you a clear idea of what the characters are. To do this,
1439 load the library @code{iso-ascii}. Similar libraries for other
1440 Latin-@var{n} character sets could be implemented, but we don't have
1443 @findex standard-display-8bit
1444 @cindex 8-bit display
1445 Normally non-ISO-8859 characters (decimal codes between 128 and 159
1446 inclusive) are displayed as octal escapes. You can change this for
1447 non-standard ``extended'' versions of ISO-8859 character sets by using the
1448 function @code{standard-display-8bit} in the @code{disp-table} library.
1450 There are two ways to input single-byte non-@acronym{ASCII}
1456 You can use an input method for the selected language environment.
1457 @xref{Input Methods}. When you use an input method in a unibyte buffer,
1458 the non-@acronym{ASCII} character you specify with it is converted to unibyte.
1461 If your keyboard can generate character codes 128 (decimal) and up,
1462 representing non-@acronym{ASCII} characters, you can type those character codes
1465 On a graphical display, you should not need to do anything special to use
1466 these keys; they should simply work. On a text-only terminal, you
1467 should use the command @code{M-x set-keyboard-coding-system} or the
1468 variable @code{keyboard-coding-system} to specify which coding system
1469 your keyboard uses (@pxref{Terminal Coding}). Enabling this feature
1470 will probably require you to use @kbd{ESC} to type Meta characters;
1471 however, on a console terminal or in @code{xterm}, you can arrange for
1472 Meta to be converted to @kbd{ESC} and still be able type 8-bit
1473 characters present directly on the keyboard or using @kbd{Compose} or
1474 @kbd{AltGr} keys. @xref{User Input}.
1477 @cindex @code{iso-transl} library
1478 @cindex compose character
1479 @cindex dead character
1481 For Latin-1 only, you can use the key @kbd{C-x 8} as a ``compose
1482 character'' prefix for entry of non-@acronym{ASCII} Latin-1 printing
1483 characters. @kbd{C-x 8} is good for insertion (in the minibuffer as
1484 well as other buffers), for searching, and in any other context where
1485 a key sequence is allowed.
1487 @kbd{C-x 8} works by loading the @code{iso-transl} library. Once that
1488 library is loaded, the @key{ALT} modifier key, if the keyboard has
1489 one, serves the same purpose as @kbd{C-x 8}: use @key{ALT} together
1490 with an accent character to modify the following letter. In addition,
1491 if the keyboard has keys for the Latin-1 ``dead accent characters,''
1492 they too are defined to compose with the following character, once
1493 @code{iso-transl} is loaded.
1495 Use @kbd{C-x 8 C-h} to list all the available @kbd{C-x 8} translations.
1502 Emacs groups all supported characters into disjoint @dfn{charsets}.
1503 Each character code belongs to one and only one charset. For
1504 historical reasons, Emacs typically divides an 8-bit character code
1505 for an extended version of @acronym{ASCII} into two charsets:
1506 @acronym{ASCII}, which covers the codes 0 through 127, plus another
1507 charset which covers the ``right-hand part'' (the codes 128 and up).
1508 For instance, the characters of Latin-1 include the Emacs charset
1509 @code{ascii} plus the Emacs charset @code{latin-iso8859-1}.
1511 Emacs characters belonging to different charsets may look the same,
1512 but they are still different characters. For example, the letter
1513 @samp{o} with acute accent in charset @code{latin-iso8859-1}, used for
1514 Latin-1, is different from the letter @samp{o} with acute accent in
1515 charset @code{latin-iso8859-2}, used for Latin-2.
1517 @findex list-charset-chars
1518 @cindex characters in a certain charset
1519 @findex describe-character-set
1520 There are two commands for obtaining information about Emacs
1521 charsets. The command @kbd{M-x list-charset-chars} prompts for a name
1522 of a character set, and displays all the characters in that character
1523 set. The command @kbd{M-x describe-character-set} prompts for a
1524 charset name and displays information about that charset, including
1525 its internal representation within Emacs.
1527 To find out which charset a character in the buffer belongs to,
1528 put point before it and type @kbd{C-u C-x =}.
1531 arch-tag: 310ba60d-31ef-4ce7-91f1-f282dd57b6b3