Minor clarifications.
[emacs.git] / man / mule.texi
blob90b3c52a62c9c0e75136857e146ef1fe0f35b012
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004,
3 @c   2005, 2006 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
7 @cindex MULE
8 @cindex international scripts
9 @cindex multibyte characters
10 @cindex encoding of characters
12 @cindex Celtic
13 @cindex Chinese
14 @cindex Cyrillic
15 @cindex Czech
16 @cindex Devanagari
17 @cindex Hindi
18 @cindex Marathi
19 @cindex Ethiopic
20 @cindex German
21 @cindex Greek
22 @cindex Hebrew
23 @cindex IPA
24 @cindex Japanese
25 @cindex Korean
26 @cindex Lao
27 @cindex Latin
28 @cindex Polish
29 @cindex Romanian
30 @cindex Slovak
31 @cindex Slovenian
32 @cindex Thai
33 @cindex Tibetan
34 @cindex Turkish
35 @cindex Vietnamese
36 @cindex Dutch
37 @cindex Spanish
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:
49 @itemize @bullet
50 @item
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}.
59 @item
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.
67 @item
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}.
76 C-x 8}.
78 On X Window systems, your locale should be set to an appropriate value
79 to make sure Emacs interprets keyboard input correctly; see
80 @ref{Language Environments, locales}.
81 @end itemize
83   The rest of this chapter describes these issues in detail.
85 @menu
86 * International Chars::     Basic concepts of multibyte characters.
87 * Enabling Multibyte::      Controlling whether to use multibyte characters.
88 * Language Environments::   Setting things up for the language you use.
89 * Input Methods::           Entering text characters not on your keyboard.
90 * Select Input Method::     Specifying your choice of input methods.
91 * Multibyte Conversion::    How single-byte characters convert to multibyte.
92 * Coding Systems::          Character set conversion when you read and
93                               write files, and so on.
94 * Recognize Coding::        How Emacs figures out which conversion to use.
95 * Text Coding::             Choosing conversion to use for file text.
96 * Communication Coding::    Coding systems for interprocess communication.
97 * File Name Coding::        Coding systems for file @emph{names}.
98 * Terminal Coding::         Specifying coding systems for converting
99                               terminal input and output.
100 * Fontsets::                Fontsets are collections of fonts
101                               that cover the whole spectrum of characters.
102 * Defining Fontsets::       Defining a new fontset.
103 * Undisplayable Characters:: When characters don't display.
104 * Unibyte Mode::            You can pick one European character set
105                               to use without multibyte characters.
106 * Charsets::                How Emacs groups its internal character codes.
107 @end menu
109 @node International Chars
110 @section Introduction to International Character Sets
112   The users of international character sets and scripts have
113 established many more-or-less standard coding systems for storing
114 files.  Emacs internally uses a single multibyte character encoding,
115 so that it can intermix characters from all these scripts in a single
116 buffer or string.  This encoding represents each non-@acronym{ASCII}
117 character as a sequence of bytes in the range 0200 through 0377.
118 Emacs translates between the multibyte character encoding and various
119 other coding systems when reading and writing files, when exchanging
120 data with subprocesses, and (in some cases) in the @kbd{C-q} command
121 (@pxref{Multibyte Conversion}).
123 @kindex C-h h
124 @findex view-hello-file
125 @cindex undisplayable characters
126 @cindex @samp{?} in display
127   The command @kbd{C-h h} (@code{view-hello-file}) displays the file
128 @file{etc/HELLO}, which shows how to say ``hello'' in many languages.
129 This illustrates various scripts.  If some characters can't be
130 displayed on your terminal, they appear as @samp{?} or as hollow boxes
131 (@pxref{Undisplayable Characters}).
133   Keyboards, even in the countries where these character sets are used,
134 generally don't have keys for all the characters in them.  So Emacs
135 supports various @dfn{input methods}, typically one for each script or
136 language, to make it convenient to type them.
138 @kindex C-x RET
139   The prefix key @kbd{C-x @key{RET}} is used for commands that pertain
140 to multibyte characters, coding systems, and input methods.
142 @node Enabling Multibyte
143 @section Enabling Multibyte Characters
145   By default, Emacs starts in multibyte mode, because that allows you to
146 use all the supported languages and scripts without limitations.
148 @cindex turn multibyte support on or off
149   You can enable or disable multibyte character support, either for
150 Emacs as a whole, or for a single buffer.  When multibyte characters
151 are disabled in a buffer, we call that @dfn{unibyte mode}.  Then each
152 byte in that buffer represents a character, even codes 0200 through
153 0377.
155   The old features for supporting the European character sets, ISO
156 Latin-1 and ISO Latin-2, work in unibyte mode as they did in Emacs 19
157 and also work for the other ISO 8859 character sets.  However, there
158 is no need to turn off multibyte character support to use ISO Latin;
159 the Emacs multibyte character set includes all the characters in these
160 character sets, and Emacs can translate automatically to and from the
161 ISO codes.
163   To edit a particular file in unibyte representation, visit it using
164 @code{find-file-literally}.  @xref{Visiting}.  To convert a buffer in
165 multibyte representation into a single-byte representation of the same
166 characters, the easiest way is to save the contents in a file, kill the
167 buffer, and find the file again with @code{find-file-literally}.  You
168 can also use @kbd{C-x @key{RET} c}
169 (@code{universal-coding-system-argument}) and specify @samp{raw-text} as
170 the coding system with which to find or save a file.  @xref{Text
171 Coding}.  Finding a file as @samp{raw-text} doesn't disable format
172 conversion, uncompression and auto mode selection as
173 @code{find-file-literally} does.
175 @vindex enable-multibyte-characters
176 @vindex default-enable-multibyte-characters
177   To turn off multibyte character support by default, start Emacs with
178 the @samp{--unibyte} option (@pxref{Initial Options}), or set the
179 environment variable @env{EMACS_UNIBYTE}.  You can also customize
180 @code{enable-multibyte-characters} or, equivalently, directly set the
181 variable @code{default-enable-multibyte-characters} to @code{nil} in
182 your init file to have basically the same effect as @samp{--unibyte}.
184 @findex toggle-enable-multibyte-characters
185   To convert a unibyte session to a multibyte session, set
186 @code{default-enable-multibyte-characters} to @code{t}.  Buffers which
187 were created in the unibyte session before you turn on multibyte support
188 will stay unibyte.  You can turn on multibyte support in a specific
189 buffer by invoking the command @code{toggle-enable-multibyte-characters}
190 in that buffer.
192 @cindex Lisp files, and multibyte operation
193 @cindex multibyte operation, and Lisp files
194 @cindex unibyte operation, and Lisp files
195 @cindex init file, and non-@acronym{ASCII} characters
196 @cindex environment variables, and non-@acronym{ASCII} characters
197   With @samp{--unibyte}, multibyte strings are not created during
198 initialization from the values of environment variables,
199 @file{/etc/passwd} entries etc.@: that contain non-@acronym{ASCII} 8-bit
200 characters.
202   Emacs normally loads Lisp files as multibyte, regardless of whether
203 you used @samp{--unibyte}.  This includes the Emacs initialization file,
204 @file{.emacs}, and the initialization files of Emacs packages such as
205 Gnus.  However, you can specify unibyte loading for a particular Lisp
206 file, by putting @w{@samp{-*-unibyte: t;-*-}} in a comment on the first
207 line (@pxref{File Variables}).  Then that file is always loaded as
208 unibyte text, even if you did not start Emacs with @samp{--unibyte}.
209 The motivation for these conventions is that it is more reliable to
210 always load any particular Lisp file in the same way.  However, you can
211 load a Lisp file as unibyte, on any one occasion, by typing @kbd{C-x
212 @key{RET} c raw-text @key{RET}} immediately before loading it.
214   The mode line indicates whether multibyte character support is enabled
215 in the current buffer.  If it is, there are two or more characters (most
216 often two dashes) before the colon near the beginning of the mode line.
217 When multibyte characters are not enabled, nothing precedes the colon
218 except a single dash.
220 @node Language Environments
221 @section Language Environments
222 @cindex language environments
224   All supported character sets are supported in Emacs buffers whenever
225 multibyte characters are enabled; there is no need to select a
226 particular language in order to display its characters in an Emacs
227 buffer.  However, it is important to select a @dfn{language environment}
228 in order to set various defaults.  The language environment really
229 represents a choice of preferred script (more or less) rather than a
230 choice of language.
232   The language environment controls which coding systems to recognize
233 when reading text (@pxref{Recognize Coding}).  This applies to files,
234 incoming mail, netnews, and any other text you read into Emacs.  It may
235 also specify the default coding system to use when you create a file.
236 Each language environment also specifies a default input method.
238 @findex set-language-environment
239 @vindex current-language-environment
240   To select a language environment, you can customize the variable
241 @code{current-language-environment} or use the command @kbd{M-x
242 set-language-environment}.  It makes no difference which buffer is
243 current when you use this command, because the effects apply globally to
244 the Emacs session.  The supported language environments include:
246 @cindex Euro sign
247 @cindex UTF-8
248 @quotation
249 Belarusian, Brazilian Portuguese, Bulgarian, Chinese-BIG5,
250 Chinese-CNS, Chinese-EUC-TW, Chinese-GB, Croatian, Cyrillic-ALT,
251 Cyrillic-ISO, Cyrillic-KOI8, Czech, Devanagari, Dutch, English,
252 Ethiopic, French, Georgian, German, Greek, Hebrew, IPA, Italian,
253 Japanese, Kannada, Korean, Lao, Latin-1, Latin-2, Latin-3,
254 Latin-4, Latin-5, Latin-6, Latin-7, Latin-8 (Celtic),
255 Latin-9 (updated Latin-1 with the Euro sign), Latvian,
256 Lithuanian, Malayalam, Polish, Romanian, Russian, Slovak,
257 Slovenian, Spanish, Swedish, Tajik, Tamil, Thai, Tibetan,
258 Turkish, UTF-8 (for a setup which prefers Unicode characters and
259 files encoded in UTF-8), Ukrainian, Vietnamese, Welsh, and
260 Windows-1255 (for a setup which prefers Cyrillic characters and
261 files encoded in Windows-1255).
262 @end quotation
264 @cindex fonts for various scripts
265 @cindex Intlfonts package, installation
266   To display the script(s) used by your language environment on a
267 graphical display, you need to have a suitable font.  If some of the
268 characters appear as empty boxes, you should install the GNU Intlfonts
269 package, which includes fonts for most supported scripts.@footnote{If
270 you run Emacs on X, you need to inform the X server about the location
271 of the newly installed fonts with the following commands:
273 @example
274  xset fp+ /usr/local/share/emacs/fonts
275  xset fp rehash
276 @end example
278 @xref{Fontsets}, for more details about setting up your fonts.
280 @findex set-locale-environment
281 @vindex locale-language-names
282 @vindex locale-charset-language-names
283 @cindex locales
284   Some operating systems let you specify the character-set locale you
285 are using by setting the locale environment variables @env{LC_ALL},
286 @env{LC_CTYPE}, or @env{LANG}.@footnote{If more than one of these is
287 set, the first one that is nonempty specifies your locale for this
288 purpose.}  During startup, Emacs looks up your character-set locale's
289 name in the system locale alias table, matches its canonical name
290 against entries in the value of the variables
291 @code{locale-charset-language-names} and @code{locale-language-names},
292 and selects the corresponding language environment if a match is found.
293 (The former variable overrides the latter.)  It also adjusts the display
294 table and terminal coding system, the locale coding system, the
295 preferred coding system as needed for the locale, and---last but not
296 least---the way Emacs decodes non-@acronym{ASCII} characters sent by your keyboard.
298   If you modify the @env{LC_ALL}, @env{LC_CTYPE}, or @env{LANG}
299 environment variables while running Emacs, you may want to invoke the
300 @code{set-locale-environment} function afterwards to readjust the
301 language environment from the new locale.
303 @vindex locale-preferred-coding-systems
304   The @code{set-locale-environment} function normally uses the preferred
305 coding system established by the language environment to decode system
306 messages.  But if your locale matches an entry in the variable
307 @code{locale-preferred-coding-systems}, Emacs uses the corresponding
308 coding system instead.  For example, if the locale @samp{ja_JP.PCK}
309 matches @code{japanese-shift-jis} in
310 @code{locale-preferred-coding-systems}, Emacs uses that encoding even
311 though it might normally use @code{japanese-iso-8bit}.
313   You can override the language environment chosen at startup with
314 explicit use of the command @code{set-language-environment}, or with
315 customization of @code{current-language-environment} in your init
316 file.
318 @kindex C-h L
319 @findex describe-language-environment
320   To display information about the effects of a certain language
321 environment @var{lang-env}, use the command @kbd{C-h L @var{lang-env}
322 @key{RET}} (@code{describe-language-environment}).  This tells you
323 which languages this language environment is useful for, and lists the
324 character sets, coding systems, and input methods that go with it.  It
325 also shows some sample text to illustrate scripts used in this
326 language environment.  If you give an empty input for @var{lang-env},
327 this command describes the chosen language environment.
329 @vindex set-language-environment-hook
330   You can customize any language environment with the normal hook
331 @code{set-language-environment-hook}.  The command
332 @code{set-language-environment} runs that hook after setting up the new
333 language environment.  The hook functions can test for a specific
334 language environment by checking the variable
335 @code{current-language-environment}.  This hook is where you should
336 put non-default settings for specific language environment, such as
337 coding systems for keyboard input and terminal output, the default
338 input method, etc.
340 @vindex exit-language-environment-hook
341   Before it starts to set up the new language environment,
342 @code{set-language-environment} first runs the hook
343 @code{exit-language-environment-hook}.  This hook is useful for undoing
344 customizations that were made with @code{set-language-environment-hook}.
345 For instance, if you set up a special key binding in a specific language
346 environment using @code{set-language-environment-hook}, you should set
347 up @code{exit-language-environment-hook} to restore the normal binding
348 for that key.
350 @node Input Methods
351 @section Input Methods
353 @cindex input methods
354   An @dfn{input method} is a kind of character conversion designed
355 specifically for interactive input.  In Emacs, typically each language
356 has its own input method; sometimes several languages which use the same
357 characters can share one input method.  A few languages support several
358 input methods.
360   The simplest kind of input method works by mapping @acronym{ASCII} letters
361 into another alphabet; this allows you to use one other alphabet
362 instead of @acronym{ASCII}.  The Greek and Russian input methods
363 work this way.
365   A more powerful technique is composition: converting sequences of
366 characters into one letter.  Many European input methods use composition
367 to produce a single non-@acronym{ASCII} letter from a sequence that consists of a
368 letter followed by accent characters (or vice versa).  For example, some
369 methods convert the sequence @kbd{a'} into a single accented letter.
370 These input methods have no special commands of their own; all they do
371 is compose sequences of printing characters.
373   The input methods for syllabic scripts typically use mapping followed
374 by composition.  The input methods for Thai and Korean work this way.
375 First, letters are mapped into symbols for particular sounds or tone
376 marks; then, sequences of these which make up a whole syllable are
377 mapped into one syllable sign.
379   Chinese and Japanese require more complex methods.  In Chinese input
380 methods, first you enter the phonetic spelling of a Chinese word (in
381 input method @code{chinese-py}, among others), or a sequence of
382 portions of the character (input methods @code{chinese-4corner} and
383 @code{chinese-sw}, and others).  One input sequence typically
384 corresponds to many possible Chinese characters.  You select the one
385 you mean using keys such as @kbd{C-f}, @kbd{C-b}, @kbd{C-n},
386 @kbd{C-p}, and digits, which have special meanings in this situation.
388   The possible characters are conceptually arranged in several rows,
389 with each row holding up to 10 alternatives.  Normally, Emacs displays
390 just one row at a time, in the echo area; @code{(@var{i}/@var{j})}
391 appears at the beginning, to indicate that this is the @var{i}th row
392 out of a total of @var{j} rows.  Type @kbd{C-n} or @kbd{C-p} to
393 display the next row or the previous row.
395     Type @kbd{C-f} and @kbd{C-b} to move forward and backward among
396 the alternatives in the current row.  As you do this, Emacs highlights
397 the current alternative with a special color; type @code{C-@key{SPC}}
398 to select the current alternative and use it as input.  The
399 alternatives in the row are also numbered; the number appears before
400 the alternative.  Typing a digit @var{n} selects the @var{n}th
401 alternative of the current row and uses it as input.
403   @key{TAB} in these Chinese input methods displays a buffer showing
404 all the possible characters at once; then clicking @kbd{Mouse-2} on
405 one of them selects that alternative.  The keys @kbd{C-f}, @kbd{C-b},
406 @kbd{C-n}, @kbd{C-p}, and digits continue to work as usual, but they
407 do the highlighting in the buffer showing the possible characters,
408 rather than in the echo area.
410   In Japanese input methods, first you input a whole word using
411 phonetic spelling; then, after the word is in the buffer, Emacs
412 converts it into one or more characters using a large dictionary.  One
413 phonetic spelling corresponds to a number of different Japanese words;
414 to select one of them, use @kbd{C-n} and @kbd{C-p} to cycle through
415 the alternatives.
417   Sometimes it is useful to cut off input method processing so that the
418 characters you have just entered will not combine with subsequent
419 characters.  For example, in input method @code{latin-1-postfix}, the
420 sequence @kbd{e '} combines to form an @samp{e} with an accent.  What if
421 you want to enter them as separate characters?
423   One way is to type the accent twice; this is a special feature for
424 entering the separate letter and accent.  For example, @kbd{e ' '} gives
425 you the two characters @samp{e'}.  Another way is to type another letter
426 after the @kbd{e}---something that won't combine with that---and
427 immediately delete it.  For example, you could type @kbd{e e @key{DEL}
428 '} to get separate @samp{e} and @samp{'}.
430   Another method, more general but not quite as easy to type, is to use
431 @kbd{C-\ C-\} between two characters to stop them from combining.  This
432 is the command @kbd{C-\} (@code{toggle-input-method}) used twice.
433 @ifinfo
434 @xref{Select Input Method}.
435 @end ifinfo
437 @cindex incremental search, input method interference
438   @kbd{C-\ C-\} is especially useful inside an incremental search,
439 because it stops waiting for more characters to combine, and starts
440 searching for what you have already entered.
442   To find out how to input the character after point using the current
443 input method, type @kbd{C-u C-x =}.  @xref{Position Info}.
445 @vindex input-method-verbose-flag
446 @vindex input-method-highlight-flag
447   The variables @code{input-method-highlight-flag} and
448 @code{input-method-verbose-flag} control how input methods explain
449 what is happening.  If @code{input-method-highlight-flag} is
450 non-@code{nil}, the partial sequence is highlighted in the buffer (for
451 most input methods---some disable this feature).  If
452 @code{input-method-verbose-flag} is non-@code{nil}, the list of
453 possible characters to type next is displayed in the echo area (but
454 not when you are in the minibuffer).
456 @node Select Input Method
457 @section Selecting an Input Method
459 @table @kbd
460 @item C-\
461 Enable or disable use of the selected input method.
463 @item C-x @key{RET} C-\ @var{method} @key{RET}
464 Select a new input method for the current buffer.
466 @item C-h I @var{method} @key{RET}
467 @itemx C-h C-\ @var{method} @key{RET}
468 @findex describe-input-method
469 @kindex C-h I
470 @kindex C-h C-\
471 Describe the input method @var{method} (@code{describe-input-method}).
472 By default, it describes the current input method (if any).  This
473 description should give you the full details of how to use any
474 particular input method.
476 @item M-x list-input-methods
477 Display a list of all the supported input methods.
478 @end table
480 @findex set-input-method
481 @vindex current-input-method
482 @kindex C-x RET C-\
483   To choose an input method for the current buffer, use @kbd{C-x
484 @key{RET} C-\} (@code{set-input-method}).  This command reads the
485 input method name from the minibuffer; the name normally starts with the
486 language environment that it is meant to be used with.  The variable
487 @code{current-input-method} records which input method is selected.
489 @findex toggle-input-method
490 @kindex C-\
491   Input methods use various sequences of @acronym{ASCII} characters to
492 stand for non-@acronym{ASCII} characters.  Sometimes it is useful to
493 turn off the input method temporarily.  To do this, type @kbd{C-\}
494 (@code{toggle-input-method}).  To reenable the input method, type
495 @kbd{C-\} again.
497   If you type @kbd{C-\} and you have not yet selected an input method,
498 it prompts for you to specify one.  This has the same effect as using
499 @kbd{C-x @key{RET} C-\} to specify an input method.
501   When invoked with a numeric argument, as in @kbd{C-u C-\},
502 @code{toggle-input-method} always prompts you for an input method,
503 suggesting the most recently selected one as the default.
505 @vindex default-input-method
506   Selecting a language environment specifies a default input method for
507 use in various buffers.  When you have a default input method, you can
508 select it in the current buffer by typing @kbd{C-\}.  The variable
509 @code{default-input-method} specifies the default input method
510 (@code{nil} means there is none).
512   In some language environments, which support several different input
513 methods, you might want to use an input method different from the
514 default chosen by @code{set-language-environment}.  You can instruct
515 Emacs to select a different default input method for a certain
516 language environment, if you wish, by using
517 @code{set-language-environment-hook} (@pxref{Language Environments,
518 set-language-environment-hook}).  For example:
520 @lisp
521 (defun my-chinese-setup ()
522   "Set up my private Chinese environment."
523   (if (equal current-language-environment "Chinese-GB")
524       (setq default-input-method "chinese-tonepy")))
525 (add-hook 'set-language-environment-hook 'my-chinese-setup)
526 @end lisp
528 @noindent
529 This sets the default input method to be @code{chinese-tonepy}
530 whenever you choose a Chinese-GB language environment.
532 @findex quail-set-keyboard-layout
533   Some input methods for alphabetic scripts work by (in effect)
534 remapping the keyboard to emulate various keyboard layouts commonly used
535 for those scripts.  How to do this remapping properly depends on your
536 actual keyboard layout.  To specify which layout your keyboard has, use
537 the command @kbd{M-x quail-set-keyboard-layout}.
539 @findex quail-show-key
540   You can use the command @kbd{M-x quail-show-key} to show what key (or
541 key sequence) to type in order to input the character following point,
542 using the selected keyboard layout.  The command @kbd{C-u C-x =} also
543 shows that information in addition to the other information about the
544 character.
546 @findex list-input-methods
547   To display a list of all the supported input methods, type @kbd{M-x
548 list-input-methods}.  The list gives information about each input
549 method, including the string that stands for it in the mode line.
551 @node Multibyte Conversion
552 @section Unibyte and Multibyte Non-@acronym{ASCII} characters
554   When multibyte characters are enabled, character codes 0240 (octal)
555 through 0377 (octal) are not really legitimate in the buffer.  The valid
556 non-@acronym{ASCII} printing characters have codes that start from 0400.
558   If you type a self-inserting character in the range 0240 through
559 0377, or if you use @kbd{C-q} to insert one, Emacs assumes you
560 intended to use one of the ISO Latin-@var{n} character sets, and
561 converts it to the Emacs code representing that Latin-@var{n}
562 character.  You select @emph{which} ISO Latin character set to use
563 through your choice of language environment
564 @iftex
565 (see above).
566 @end iftex
567 @ifinfo
568 (@pxref{Language Environments}).
569 @end ifinfo
570 If you do not specify a choice, the default is Latin-1.
572   If you insert a character in the range 0200 through 0237, which
573 forms the @code{eight-bit-control} character set, it is inserted
574 literally.  You should normally avoid doing this since buffers
575 containing such characters have to be written out in either the
576 @code{emacs-mule} or @code{raw-text} coding system, which is usually
577 not what you want.
579 @node Coding Systems
580 @section Coding Systems
581 @cindex coding systems
583   Users of various languages have established many more-or-less standard
584 coding systems for representing them.  Emacs does not use these coding
585 systems internally; instead, it converts from various coding systems to
586 its own system when reading data, and converts the internal coding
587 system to other coding systems when writing data.  Conversion is
588 possible in reading or writing files, in sending or receiving from the
589 terminal, and in exchanging data with subprocesses.
591   Emacs assigns a name to each coding system.  Most coding systems are
592 used for one language, and the name of the coding system starts with the
593 language name.  Some coding systems are used for several languages;
594 their names usually start with @samp{iso}.  There are also special
595 coding systems @code{no-conversion}, @code{raw-text} and
596 @code{emacs-mule} which do not convert printing characters at all.
598 @cindex international files from DOS/Windows systems
599   A special class of coding systems, collectively known as
600 @dfn{codepages}, is designed to support text encoded by MS-Windows and
601 MS-DOS software.  The names of these coding systems are
602 @code{cp@var{nnnn}}, where @var{nnnn} is a 3- or 4-digit number of the
603 codepage.  You can use these encodings just like any other coding
604 system; for example, to visit a file encoded in codepage 850, type
605 @kbd{C-x @key{RET} c cp850 @key{RET} C-x C-f @var{filename}
606 @key{RET}}@footnote{
607 In the MS-DOS port of Emacs, you need to create a @code{cp@var{nnn}}
608 coding system with @kbd{M-x codepage-setup}, before you can use it.
609 @xref{MS-DOS and MULE}.}.
611   In addition to converting various representations of non-@acronym{ASCII}
612 characters, a coding system can perform end-of-line conversion.  Emacs
613 handles three different conventions for how to separate lines in a file:
614 newline, carriage-return linefeed, and just carriage-return.
616 @table @kbd
617 @item C-h C @var{coding} @key{RET}
618 Describe coding system @var{coding}.
620 @item C-h C @key{RET}
621 Describe the coding systems currently in use.
623 @item M-x list-coding-systems
624 Display a list of all the supported coding systems.
625 @end table
627 @kindex C-h C
628 @findex describe-coding-system
629   The command @kbd{C-h C} (@code{describe-coding-system}) displays
630 information about particular coding systems.  You can specify a coding
631 system name as the argument; alternatively, with an empty argument, it
632 describes the coding systems currently selected for various purposes,
633 both in the current buffer and as the defaults, and the priority list
634 for recognizing coding systems (@pxref{Recognize Coding}).
636 @findex list-coding-systems
637   To display a list of all the supported coding systems, type @kbd{M-x
638 list-coding-systems}.  The list gives information about each coding
639 system, including the letter that stands for it in the mode line
640 (@pxref{Mode Line}).
642 @cindex end-of-line conversion
643 @cindex MS-DOS end-of-line conversion
644 @cindex Macintosh end-of-line conversion
645   Each of the coding systems that appear in this list---except for
646 @code{no-conversion}, which means no conversion of any kind---specifies
647 how and whether to convert printing characters, but leaves the choice of
648 end-of-line conversion to be decided based on the contents of each file.
649 For example, if the file appears to use the sequence carriage-return
650 linefeed to separate lines, DOS end-of-line conversion will be used.
652   Each of the listed coding systems has three variants which specify
653 exactly what to do for end-of-line conversion:
655 @table @code
656 @item @dots{}-unix
657 Don't do any end-of-line conversion; assume the file uses
658 newline to separate lines.  (This is the convention normally used
659 on Unix and GNU systems.)
661 @item @dots{}-dos
662 Assume the file uses carriage-return linefeed to separate lines, and do
663 the appropriate conversion.  (This is the convention normally used on
664 Microsoft systems.@footnote{It is also specified for MIME @samp{text/*}
665 bodies and in other network transport contexts.  It is different
666 from the SGML reference syntax record-start/record-end format which
667 Emacs doesn't support directly.})
669 @item @dots{}-mac
670 Assume the file uses carriage-return to separate lines, and do the
671 appropriate conversion.  (This is the convention normally used on the
672 Macintosh system.)
673 @end table
675   These variant coding systems are omitted from the
676 @code{list-coding-systems} display for brevity, since they are entirely
677 predictable.  For example, the coding system @code{iso-latin-1} has
678 variants @code{iso-latin-1-unix}, @code{iso-latin-1-dos} and
679 @code{iso-latin-1-mac}.
681   The coding system @code{raw-text} is good for a file which is mainly
682 @acronym{ASCII} text, but may contain byte values above 127 which are
683 not meant to encode non-@acronym{ASCII} characters.  With
684 @code{raw-text}, Emacs copies those byte values unchanged, and sets
685 @code{enable-multibyte-characters} to @code{nil} in the current buffer
686 so that they will be interpreted properly.  @code{raw-text} handles
687 end-of-line conversion in the usual way, based on the data
688 encountered, and has the usual three variants to specify the kind of
689 end-of-line conversion to use.
691   In contrast, the coding system @code{no-conversion} specifies no
692 character code conversion at all---none for non-@acronym{ASCII} byte values and
693 none for end of line.  This is useful for reading or writing binary
694 files, tar files, and other files that must be examined verbatim.  It,
695 too, sets @code{enable-multibyte-characters} to @code{nil}.
697   The easiest way to edit a file with no conversion of any kind is with
698 the @kbd{M-x find-file-literally} command.  This uses
699 @code{no-conversion}, and also suppresses other Emacs features that
700 might convert the file contents before you see them.  @xref{Visiting}.
702   The coding system @code{emacs-mule} means that the file contains
703 non-@acronym{ASCII} characters stored with the internal Emacs encoding.  It
704 handles end-of-line conversion based on the data encountered, and has
705 the usual three variants to specify the kind of end-of-line conversion.
707 @node Recognize Coding
708 @section Recognizing Coding Systems
710   Emacs tries to recognize which coding system to use for a given text
711 as an integral part of reading that text.  (This applies to files
712 being read, output from subprocesses, text from X selections, etc.)
713 Emacs can select the right coding system automatically most of the
714 time---once you have specified your preferences.
716   Some coding systems can be recognized or distinguished by which byte
717 sequences appear in the data.  However, there are coding systems that
718 cannot be distinguished, not even potentially.  For example, there is no
719 way to distinguish between Latin-1 and Latin-2; they use the same byte
720 values with different meanings.
722   Emacs handles this situation by means of a priority list of coding
723 systems.  Whenever Emacs reads a file, if you do not specify the coding
724 system to use, Emacs checks the data against each coding system,
725 starting with the first in priority and working down the list, until it
726 finds a coding system that fits the data.  Then it converts the file
727 contents assuming that they are represented in this coding system.
729   The priority list of coding systems depends on the selected language
730 environment (@pxref{Language Environments}).  For example, if you use
731 French, you probably want Emacs to prefer Latin-1 to Latin-2; if you use
732 Czech, you probably want Latin-2 to be preferred.  This is one of the
733 reasons to specify a language environment.
735 @findex prefer-coding-system
736   However, you can alter the coding system priority list in detail
737 with the command @kbd{M-x prefer-coding-system}.  This command reads
738 the name of a coding system from the minibuffer, and adds it to the
739 front of the priority list, so that it is preferred to all others.  If
740 you use this command several times, each use adds one element to the
741 front of the priority list.
743   If you use a coding system that specifies the end-of-line conversion
744 type, such as @code{iso-8859-1-dos}, what this means is that Emacs
745 should attempt to recognize @code{iso-8859-1} with priority, and should
746 use DOS end-of-line conversion when it does recognize @code{iso-8859-1}.
748 @vindex file-coding-system-alist
749   Sometimes a file name indicates which coding system to use for the
750 file.  The variable @code{file-coding-system-alist} specifies this
751 correspondence.  There is a special function
752 @code{modify-coding-system-alist} for adding elements to this list.  For
753 example, to read and write all @samp{.txt} files using the coding system
754 @code{china-iso-8bit}, you can execute this Lisp expression:
756 @smallexample
757 (modify-coding-system-alist 'file "\\.txt\\'" 'chinese-iso-8bit)
758 @end smallexample
760 @noindent
761 The first argument should be @code{file}, the second argument should be
762 a regular expression that determines which files this applies to, and
763 the third argument says which coding system to use for these files.
765 @vindex inhibit-eol-conversion
766 @cindex DOS-style end-of-line display
767   Emacs recognizes which kind of end-of-line conversion to use based on
768 the contents of the file: if it sees only carriage-returns, or only
769 carriage-return linefeed sequences, then it chooses the end-of-line
770 conversion accordingly.  You can inhibit the automatic use of
771 end-of-line conversion by setting the variable @code{inhibit-eol-conversion}
772 to non-@code{nil}.  If you do that, DOS-style files will be displayed
773 with the @samp{^M} characters visible in the buffer; some people
774 prefer this to the more subtle @samp{(DOS)} end-of-line type
775 indication near the left edge of the mode line (@pxref{Mode Line,
776 eol-mnemonic}).
778 @vindex inhibit-iso-escape-detection
779 @cindex escape sequences in files
780   By default, the automatic detection of coding system is sensitive to
781 escape sequences.  If Emacs sees a sequence of characters that begin
782 with an escape character, and the sequence is valid as an ISO-2022
783 code, that tells Emacs to use one of the ISO-2022 encodings to decode
784 the file.
786   However, there may be cases that you want to read escape sequences
787 in a file as is.  In such a case, you can set the variable
788 @code{inhibit-iso-escape-detection} to non-@code{nil}.  Then the code
789 detection ignores any escape sequences, and never uses an ISO-2022
790 encoding.  The result is that all escape sequences become visible in
791 the buffer.
793   The default value of @code{inhibit-iso-escape-detection} is
794 @code{nil}.  We recommend that you not change it permanently, only for
795 one specific operation.  That's because many Emacs Lisp source files
796 in the Emacs distribution contain non-@acronym{ASCII} characters encoded in the
797 coding system @code{iso-2022-7bit}, and they won't be
798 decoded correctly when you visit those files if you suppress the
799 escape sequence detection.
801 @vindex coding
802   You can specify the coding system for a particular file using the
803 @w{@samp{-*-@dots{}-*-}} construct at the beginning of a file, or a
804 local variables list at the end (@pxref{File Variables}).  You do this
805 by defining a value for the ``variable'' named @code{coding}.  Emacs
806 does not really have a variable @code{coding}; instead of setting a
807 variable, this uses the specified coding system for the file.  For
808 example, @samp{-*-mode: C; coding: latin-1;-*-} specifies use of the
809 Latin-1 coding system, as well as C mode.  When you specify the coding
810 explicitly in the file, that overrides
811 @code{file-coding-system-alist}.
813 @vindex auto-coding-alist
814 @vindex auto-coding-regexp-alist
815 @vindex auto-coding-functions
816   The variables @code{auto-coding-alist},
817 @code{auto-coding-regexp-alist} and @code{auto-coding-functions} are
818 the strongest way to specify the coding system for certain patterns of
819 file names, or for files containing certain patterns; these variables
820 even override @samp{-*-coding:-*-} tags in the file itself.  Emacs
821 uses @code{auto-coding-alist} for tar and archive files, to prevent it
822 from being confused by a @samp{-*-coding:-*-} tag in a member of the
823 archive and thinking it applies to the archive file as a whole.
824 Likewise, Emacs uses @code{auto-coding-regexp-alist} to ensure that
825 RMAIL files, whose names in general don't match any particular
826 pattern, are decoded correctly.  One of the builtin
827 @code{auto-coding-functions} detects the encoding for XML files.
829   If Emacs recognizes the encoding of a file incorrectly, you can
830 reread the file using the correct coding system by typing @kbd{C-x
831 @key{RET} r @var{coding-system} @key{RET}}.  To see what coding system
832 Emacs actually used to decode the file, look at the coding system
833 mnemonic letter near the left edge of the mode line (@pxref{Mode
834 Line}), or type @kbd{C-h C @key{RET}}.
836 @findex unify-8859-on-decoding-mode
837   The command @code{unify-8859-on-decoding-mode} enables a mode that
838 ``unifies'' the Latin alphabets when decoding text.  This works by
839 converting all non-@acronym{ASCII} Latin-@var{n} characters to either
840 Latin-1 or Unicode characters.  This way it is easier to use various
841 Latin-@var{n} alphabets together.  In a future Emacs version we hope
842 to move towards full Unicode support and complete unification of
843 character sets.
845 @vindex buffer-file-coding-system
846   Once Emacs has chosen a coding system for a buffer, it stores that
847 coding system in @code{buffer-file-coding-system} and uses that coding
848 system, by default, for operations that write from this buffer into a
849 file.  This includes the commands @code{save-buffer} and
850 @code{write-region}.  If you want to write files from this buffer using
851 a different coding system, you can specify a different coding system for
852 the buffer using @code{set-buffer-file-coding-system} (@pxref{Text
853 Coding}).
855   You can insert any possible character into any Emacs buffer, but
856 most coding systems can only handle some of the possible characters.
857 This means that it is possible for you to insert characters that
858 cannot be encoded with the coding system that will be used to save the
859 buffer.  For example, you could start with an @acronym{ASCII} file and insert a
860 few Latin-1 characters into it, or you could edit a text file in
861 Polish encoded in @code{iso-8859-2} and add some Russian words to it.
862 When you save the buffer, Emacs cannot use the current value of
863 @code{buffer-file-coding-system}, because the characters you added
864 cannot be encoded by that coding system.
866   When that happens, Emacs tries the most-preferred coding system (set
867 by @kbd{M-x prefer-coding-system} or @kbd{M-x
868 set-language-environment}), and if that coding system can safely
869 encode all of the characters in the buffer, Emacs uses it, and stores
870 its value in @code{buffer-file-coding-system}.  Otherwise, Emacs
871 displays a list of coding systems suitable for encoding the buffer's
872 contents, and asks you to choose one of those coding systems.
874   If you insert the unsuitable characters in a mail message, Emacs
875 behaves a bit differently.  It additionally checks whether the
876 most-preferred coding system is recommended for use in MIME messages;
877 if not, Emacs tells you that the most-preferred coding system is
878 not recommended and prompts you for another coding system.  This is so
879 you won't inadvertently send a message encoded in a way that your
880 recipient's mail software will have difficulty decoding.  (If you do
881 want to use the most-preferred coding system, you can still type its
882 name in response to the question.)
884 @vindex sendmail-coding-system
885   When you send a message with Mail mode (@pxref{Sending Mail}), Emacs has
886 four different ways to determine the coding system to use for encoding
887 the message text.  It tries the buffer's own value of
888 @code{buffer-file-coding-system}, if that is non-@code{nil}.  Otherwise,
889 it uses the value of @code{sendmail-coding-system}, if that is
890 non-@code{nil}.  The third way is to use the default coding system for
891 new files, which is controlled by your choice of language environment,
892 if that is non-@code{nil}.  If all of these three values are @code{nil},
893 Emacs encodes outgoing mail using the Latin-1 coding system.
895 @vindex rmail-decode-mime-charset
896   When you get new mail in Rmail, each message is translated
897 automatically from the coding system it is written in, as if it were a
898 separate file.  This uses the priority list of coding systems that you
899 have specified.  If a MIME message specifies a character set, Rmail
900 obeys that specification, unless @code{rmail-decode-mime-charset} is
901 @code{nil}.
903 @vindex rmail-file-coding-system
904   For reading and saving Rmail files themselves, Emacs uses the coding
905 system specified by the variable @code{rmail-file-coding-system}.  The
906 default value is @code{nil}, which means that Rmail files are not
907 translated (they are read and written in the Emacs internal character
908 code).
910 @node Text Coding
911 @section Specifying a Coding System for File Text
913   In cases where Emacs does not automatically choose the right coding
914 system for a file's contents, you can use these commands to specify
915 one:
917 @table @kbd
918 @item C-x @key{RET} f @var{coding} @key{RET}
919 Use coding system @var{coding} for saving or revisiting the visited
920 file in the current buffer.
922 @item C-x @key{RET} c @var{coding} @key{RET}
923 Specify coding system @var{coding} for the immediately following
924 command.
926 @item C-x @key{RET} r @var{coding} @key{RET}
927 Revisit the current file using the coding system @var{coding}.
929 @item M-x recode-region @key{RET} @var{right} @key{RET} @var{wrong} @key{RET}
930 Convert a region that was decoded using coding system @var{wrong},
931 decoding it using coding system @var{right} instead.
932 @end table
934 @kindex C-x RET f
935 @findex set-buffer-file-coding-system
936   The command @kbd{C-x @key{RET} f}
937 (@code{set-buffer-file-coding-system}) sets the file coding system for
938 the current buffer---in other words, it says which coding system to
939 use when saving or reverting the visited file.  You specify which
940 coding system using the minibuffer.  If you specify a coding system
941 that cannot handle all of the characters in the buffer, Emacs warns
942 you about the troublesome characters when you actually save the
943 buffer.
945 @kindex C-x RET c
946 @findex universal-coding-system-argument
947   Another way to specify the coding system for a file is when you visit
948 the file.  First use the command @kbd{C-x @key{RET} c}
949 (@code{universal-coding-system-argument}); this command uses the
950 minibuffer to read a coding system name.  After you exit the minibuffer,
951 the specified coding system is used for @emph{the immediately following
952 command}.
954   So if the immediately following command is @kbd{C-x C-f}, for example,
955 it reads the file using that coding system (and records the coding
956 system for when you later save the file).  Or if the immediately following
957 command is @kbd{C-x C-w}, it writes the file using that coding system.
958 When you specify the coding system for saving in this way, instead
959 of with @kbd{C-x @key{RET} f}, there is no warning if the buffer
960 contains characters that the coding system cannot handle.
962   Other file commands affected by a specified coding system include
963 @kbd{C-x C-i} and @kbd{C-x C-v}, as well as the other-window variants
964 of @kbd{C-x C-f}.  @kbd{C-x @key{RET} c} also affects commands that
965 start subprocesses, including @kbd{M-x shell} (@pxref{Shell}).  If the
966 immediately following command does not use the coding system, then
967 @kbd{C-x @key{RET} c} ultimately has no effect.
969   An easy way to visit a file with no conversion is with the @kbd{M-x
970 find-file-literally} command.  @xref{Visiting}.
972 @vindex default-buffer-file-coding-system
973   The variable @code{default-buffer-file-coding-system} specifies the
974 choice of coding system to use when you create a new file.  It applies
975 when you find a new file, and when you create a buffer and then save it
976 in a file.  Selecting a language environment typically sets this
977 variable to a good choice of default coding system for that language
978 environment.
980 @kindex C-x RET r
981 @findex revert-buffer-with-coding-system
982   If you visit a file with a wrong coding system, you can correct this
983 with @kbd{C-x @key{RET} r} (@code{revert-buffer-with-coding-system}).
984 This visits the current file again, using a coding system you specify.
986 @findex recode-region
987   If a piece of text has already been inserted into a buffer using the
988 wrong coding system, you can redo the decoding of it using @kbd{M-x
989 recode-region}.  This prompts you for the proper coding system, then
990 for the wrong coding system that was actually used, and does the
991 conversion.  It first encodes the region using the wrong coding system,
992 then decodes it again using the proper coding system.
994 @node Communication Coding
995 @section Coding Systems for Interprocess Communication
997   This section explains how to specify coding systems for use
998 in communication with other processes.
1000 @table @kbd
1001 @item C-x @key{RET} x @var{coding} @key{RET}
1002 Use coding system @var{coding} for transferring selections to and from
1003 other window-based applications.
1005 @item C-x @key{RET} X @var{coding} @key{RET}
1006 Use coding system @var{coding} for transferring @emph{one}
1007 selection---the next one---to or from another window-based application.
1009 @item C-x @key{RET} p @var{input-coding} @key{RET} @var{output-coding} @key{RET}
1010 Use coding systems @var{input-coding} and @var{output-coding} for
1011 subprocess input and output in the current buffer.
1013 @item C-x @key{RET} c @var{coding} @key{RET}
1014 Specify coding system @var{coding} for the immediately following
1015 command.
1016 @end table
1018 @kindex C-x RET x
1019 @kindex C-x RET X
1020 @findex set-selection-coding-system
1021 @findex set-next-selection-coding-system
1022   The command @kbd{C-x @key{RET} x} (@code{set-selection-coding-system})
1023 specifies the coding system for sending selected text to other windowing
1024 applications, and for receiving the text of selections made in other
1025 applications.  This command applies to all subsequent selections, until
1026 you override it by using the command again.  The command @kbd{C-x
1027 @key{RET} X} (@code{set-next-selection-coding-system}) specifies the
1028 coding system for the next selection made in Emacs or read by Emacs.
1030 @kindex C-x RET p
1031 @findex set-buffer-process-coding-system
1032   The command @kbd{C-x @key{RET} p} (@code{set-buffer-process-coding-system})
1033 specifies the coding system for input and output to a subprocess.  This
1034 command applies to the current buffer; normally, each subprocess has its
1035 own buffer, and thus you can use this command to specify translation to
1036 and from a particular subprocess by giving the command in the
1037 corresponding buffer.
1039   You can also use @kbd{C-x @key{RET} c} just before the command that
1040 runs or starts a subprocess, to specify the coding system to use for
1041 communication with that subprocess.
1043   The default for translation of process input and output depends on the
1044 current language environment.
1046 @vindex locale-coding-system
1047 @cindex decoding non-@acronym{ASCII} keyboard input on X
1048   The variable @code{locale-coding-system} specifies a coding system
1049 to use when encoding and decoding system strings such as system error
1050 messages and @code{format-time-string} formats and time stamps.  That
1051 coding system is also used for decoding non-@acronym{ASCII} keyboard input on X
1052 Window systems.  You should choose a coding system that is compatible
1053 with the underlying system's text representation, which is normally
1054 specified by one of the environment variables @env{LC_ALL},
1055 @env{LC_CTYPE}, and @env{LANG}.  (The first one, in the order
1056 specified above, whose value is nonempty is the one that determines
1057 the text representation.)
1059 @node File Name Coding
1060 @section Coding Systems for File Names
1062 @table @kbd
1063 @item C-x @key{RET} F @var{coding} @key{RET}
1064 Use coding system @var{coding} for encoding and decoding file
1065 @emph{names}.
1066 @end table
1068 @vindex file-name-coding-system
1069 @cindex file names with non-@acronym{ASCII} characters
1070   The variable @code{file-name-coding-system} specifies a coding
1071 system to use for encoding file names.  It has no effect on reading
1072 and writing the @emph{contents} of files.
1074 @findex set-file-name-coding-system
1075 @kindex C-x @key{RET} F
1076   If you set the variable to a coding system name (as a Lisp symbol or
1077 a string), Emacs encodes file names using that coding system for all
1078 file operations.  This makes it possible to use non-@acronym{ASCII}
1079 characters in file names---or, at least, those non-@acronym{ASCII}
1080 characters which the specified coding system can encode.  Use @kbd{C-x
1081 @key{RET} F} (@code{set-file-name-coding-system}) to specify this
1082 interactively.
1084   If @code{file-name-coding-system} is @code{nil}, Emacs uses a
1085 default coding system determined by the selected language environment.
1086 In the default language environment, any non-@acronym{ASCII}
1087 characters in file names are not encoded specially; they appear in the
1088 file system using the internal Emacs representation.
1090   @strong{Warning:} if you change @code{file-name-coding-system} (or the
1091 language environment) in the middle of an Emacs session, problems can
1092 result if you have already visited files whose names were encoded using
1093 the earlier coding system and cannot be encoded (or are encoded
1094 differently) under the new coding system.  If you try to save one of
1095 these buffers under the visited file name, saving may use the wrong file
1096 name, or it may get an error.  If such a problem happens, use @kbd{C-x
1097 C-w} to specify a new file name for that buffer.
1099 @findex recode-file-name
1100   If a mistake occurs when encoding a file name, use the command
1101 @kbd{M-x recode-file-name} to change the file name's coding
1102 system.  This prompts for an existing file name, its old coding
1103 system, and the coding system to which you wish to convert.
1105 @node Terminal Coding
1106 @section Coding Systems for Terminal I/O
1108 @table @kbd
1109 @item C-x @key{RET} k @var{coding} @key{RET}
1110 Use coding system @var{coding} for keyboard input.
1112 @item C-x @key{RET} t @var{coding} @key{RET}
1113 Use coding system @var{coding} for terminal output.
1114 @end table
1116 @kindex C-x RET t
1117 @findex set-terminal-coding-system
1118   The command @kbd{C-x @key{RET} t} (@code{set-terminal-coding-system})
1119 specifies the coding system for terminal output.  If you specify a
1120 character code for terminal output, all characters output to the
1121 terminal are translated into that coding system.
1123   This feature is useful for certain character-only terminals built to
1124 support specific languages or character sets---for example, European
1125 terminals that support one of the ISO Latin character sets.  You need to
1126 specify the terminal coding system when using multibyte text, so that
1127 Emacs knows which characters the terminal can actually handle.
1129   By default, output to the terminal is not translated at all, unless
1130 Emacs can deduce the proper coding system from your terminal type or
1131 your locale specification (@pxref{Language Environments}).
1133 @kindex C-x RET k
1134 @findex set-keyboard-coding-system
1135 @vindex keyboard-coding-system
1136   The command @kbd{C-x @key{RET} k} (@code{set-keyboard-coding-system})
1137 or the variable @code{keyboard-coding-system} specifies the coding
1138 system for keyboard input.  Character-code translation of keyboard
1139 input is useful for terminals with keys that send non-@acronym{ASCII}
1140 graphic characters---for example, some terminals designed for ISO
1141 Latin-1 or subsets of it.
1143   By default, keyboard input is translated based on your system locale
1144 setting.  If your terminal does not really support the encoding
1145 implied by your locale (for example, if you find it inserts a
1146 non-@acronym{ASCII} character if you type @kbd{M-i}), you will need to set
1147 @code{keyboard-coding-system} to @code{nil} to turn off encoding.
1148 You can do this by putting
1150 @lisp
1151 (set-keyboard-coding-system nil)
1152 @end lisp
1154 @noindent
1155 in your @file{~/.emacs} file.
1157   There is a similarity between using a coding system translation for
1158 keyboard input, and using an input method: both define sequences of
1159 keyboard input that translate into single characters.  However, input
1160 methods are designed to be convenient for interactive use by humans, and
1161 the sequences that are translated are typically sequences of @acronym{ASCII}
1162 printing characters.  Coding systems typically translate sequences of
1163 non-graphic characters.
1165 @node Fontsets
1166 @section Fontsets
1167 @cindex fontsets
1169   A font typically defines shapes for a single alphabet or script.
1170 Therefore, displaying the entire range of scripts that Emacs supports
1171 requires a collection of many fonts.  In Emacs, such a collection is
1172 called a @dfn{fontset}.  A fontset is defined by a list of fonts, each
1173 assigned to handle a range of character codes.
1175   Each fontset has a name, like a font.  However, while fonts are
1176 stored in the system and the available font names are defined by the
1177 system, fontsets are defined within Emacs itself.  Once you have
1178 defined a fontset, you can use it within Emacs by specifying its name,
1179 anywhere that you could use a single font.  Of course, Emacs fontsets
1180 can use only the fonts that the system supports; if certain characters
1181 appear on the screen as hollow boxes, this means that the fontset in
1182 use for them has no font for those characters.@footnote{The Emacs
1183 installation instructions have information on additional font
1184 support.}
1186   Emacs creates two fontsets automatically: the @dfn{standard fontset}
1187 and the @dfn{startup fontset}.  The standard fontset is most likely to
1188 have fonts for a wide variety of non-@acronym{ASCII} characters;
1189 however, this is not the default for Emacs to use.  (By default, Emacs
1190 tries to find a font that has bold and italic variants.)  You can
1191 specify use of the standard fontset with the @samp{-fn} option.  For
1192 example,
1194 @example
1195 emacs -fn fontset-standard
1196 @end example
1198 @noindent
1199 You can also specify a fontset with the @samp{Font} resource (@pxref{X
1200 Resources}).
1202   A fontset does not necessarily specify a font for every character
1203 code.  If a fontset specifies no font for a certain character, or if it
1204 specifies a font that does not exist on your system, then it cannot
1205 display that character properly.  It will display that character as an
1206 empty box instead.
1208 @node Defining Fontsets
1209 @section Defining fontsets
1211 @vindex standard-fontset-spec
1212 @cindex standard fontset
1213   Emacs creates a standard fontset automatically according to the value
1214 of @code{standard-fontset-spec}.  This fontset's name is
1216 @example
1217 -*-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-standard
1218 @end example
1220 @noindent
1221 or just @samp{fontset-standard} for short.
1223   Bold, italic, and bold-italic variants of the standard fontset are
1224 created automatically.  Their names have @samp{bold} instead of
1225 @samp{medium}, or @samp{i} instead of @samp{r}, or both.
1227 @cindex startup fontset
1228   If you specify a default @acronym{ASCII} font with the @samp{Font} resource or
1229 the @samp{-fn} argument, Emacs generates a fontset from it
1230 automatically.  This is the @dfn{startup fontset} and its name is
1231 @code{fontset-startup}.  It does this by replacing the @var{foundry},
1232 @var{family}, @var{add_style}, and @var{average_width} fields of the
1233 font name with @samp{*}, replacing @var{charset_registry} field with
1234 @samp{fontset}, and replacing @var{charset_encoding} field with
1235 @samp{startup}, then using the resulting string to specify a fontset.
1237   For instance, if you start Emacs this way,
1239 @example
1240 emacs -fn "*courier-medium-r-normal--14-140-*-iso8859-1"
1241 @end example
1243 @noindent
1244 Emacs generates the following fontset and uses it for the initial X
1245 window frame:
1247 @example
1248 -*-*-medium-r-normal-*-14-140-*-*-*-*-fontset-startup
1249 @end example
1251   With the X resource @samp{Emacs.Font}, you can specify a fontset name
1252 just like an actual font name.  But be careful not to specify a fontset
1253 name in a wildcard resource like @samp{Emacs*Font}---that wildcard
1254 specification matches various other resources, such as for menus, and
1255 menus cannot handle fontsets.
1257   You can specify additional fontsets using X resources named
1258 @samp{Fontset-@var{n}}, where @var{n} is an integer starting from 0.
1259 The resource value should have this form:
1261 @smallexample
1262 @var{fontpattern}, @r{[}@var{charsetname}:@var{fontname}@r{]@dots{}}
1263 @end smallexample
1265 @noindent
1266 @var{fontpattern} should have the form of a standard X font name, except
1267 for the last two fields.  They should have the form
1268 @samp{fontset-@var{alias}}.
1270   The fontset has two names, one long and one short.  The long name is
1271 @var{fontpattern}.  The short name is @samp{fontset-@var{alias}}.  You
1272 can refer to the fontset by either name.
1274   The construct @samp{@var{charset}:@var{font}} specifies which font to
1275 use (in this fontset) for one particular character set.  Here,
1276 @var{charset} is the name of a character set, and @var{font} is the
1277 font to use for that character set.  You can use this construct any
1278 number of times in defining one fontset.
1280   For the other character sets, Emacs chooses a font based on
1281 @var{fontpattern}.  It replaces @samp{fontset-@var{alias}} with values
1282 that describe the character set.  For the @acronym{ASCII} character font,
1283 @samp{fontset-@var{alias}} is replaced with @samp{ISO8859-1}.
1285   In addition, when several consecutive fields are wildcards, Emacs
1286 collapses them into a single wildcard.  This is to prevent use of
1287 auto-scaled fonts.  Fonts made by scaling larger fonts are not usable
1288 for editing, and scaling a smaller font is not useful because it is
1289 better to use the smaller font in its own size, which is what Emacs
1290 does.
1292   Thus if @var{fontpattern} is this,
1294 @example
1295 -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24
1296 @end example
1298 @noindent
1299 the font specification for @acronym{ASCII} characters would be this:
1301 @example
1302 -*-fixed-medium-r-normal-*-24-*-ISO8859-1
1303 @end example
1305 @noindent
1306 and the font specification for Chinese GB2312 characters would be this:
1308 @example
1309 -*-fixed-medium-r-normal-*-24-*-gb2312*-*
1310 @end example
1312   You may not have any Chinese font matching the above font
1313 specification.  Most X distributions include only Chinese fonts that
1314 have @samp{song ti} or @samp{fangsong ti} in @var{family} field.  In
1315 such a case, @samp{Fontset-@var{n}} can be specified as below:
1317 @smallexample
1318 Emacs.Fontset-0: -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24,\
1319         chinese-gb2312:-*-*-medium-r-normal-*-24-*-gb2312*-*
1320 @end smallexample
1322 @noindent
1323 Then, the font specifications for all but Chinese GB2312 characters have
1324 @samp{fixed} in the @var{family} field, and the font specification for
1325 Chinese GB2312 characters has a wild card @samp{*} in the @var{family}
1326 field.
1328 @findex create-fontset-from-fontset-spec
1329   The function that processes the fontset resource value to create the
1330 fontset is called @code{create-fontset-from-fontset-spec}.  You can also
1331 call this function explicitly to create a fontset.
1333   @xref{Font X}, for more information about font naming in X.
1335 @node Undisplayable Characters
1336 @section Undisplayable Characters
1338   There may be a some non-@acronym{ASCII} characters that your terminal cannot
1339 display.  Most text-only terminals support just a single character
1340 set (use the variable @code{default-terminal-coding-system}
1341 (@pxref{Terminal Coding}) to tell Emacs which one); characters which
1342 can't be encoded in that coding system are displayed as @samp{?} by
1343 default.
1345   Graphical displays can display a broader range of characters, but
1346 you may not have fonts installed for all of them; characters that have
1347 no font appear as a hollow box.
1349   If you use Latin-1 characters but your terminal can't display
1350 Latin-1, you can arrange to display mnemonic @acronym{ASCII} sequences
1351 instead, e.g.@: @samp{"o} for o-umlaut.  Load the library
1352 @file{iso-ascii} to do this.
1354 @vindex latin1-display
1355   If your terminal can display Latin-1, you can display characters
1356 from other European character sets using a mixture of equivalent
1357 Latin-1 characters and @acronym{ASCII} mnemonics.  Customize the variable
1358 @code{latin1-display} to enable this.  The mnemonic @acronym{ASCII}
1359 sequences mostly correspond to those of the prefix input methods.
1361 @node Unibyte Mode
1362 @section Unibyte Editing Mode
1364 @cindex European character sets
1365 @cindex accented characters
1366 @cindex ISO Latin character sets
1367 @cindex Unibyte operation
1368   The ISO 8859 Latin-@var{n} character sets define character codes in
1369 the range 0240 to 0377 octal (160 to 255 decimal) to handle the
1370 accented letters and punctuation needed by various European languages
1371 (and some non-European ones).  If you disable multibyte characters,
1372 Emacs can still handle @emph{one} of these character codes at a time.
1373 To specify @emph{which} of these codes to use, invoke @kbd{M-x
1374 set-language-environment} and specify a suitable language environment
1375 such as @samp{Latin-@var{n}}.
1377   For more information about unibyte operation, see @ref{Enabling
1378 Multibyte}.  Note particularly that you probably want to ensure that
1379 your initialization files are read as unibyte if they contain
1380 non-@acronym{ASCII} characters.
1382 @vindex unibyte-display-via-language-environment
1383   Emacs can also display those characters, provided the terminal or font
1384 in use supports them.  This works automatically.  Alternatively, on a
1385 graphical display, Emacs can also display single-byte characters
1386 through fontsets, in effect by displaying the equivalent multibyte
1387 characters according to the current language environment.  To request
1388 this, set the variable @code{unibyte-display-via-language-environment}
1389 to a non-@code{nil} value.
1391 @cindex @code{iso-ascii} library
1392   If your terminal does not support display of the Latin-1 character
1393 set, Emacs can display these characters as @acronym{ASCII} sequences which at
1394 least give you a clear idea of what the characters are.  To do this,
1395 load the library @code{iso-ascii}.  Similar libraries for other
1396 Latin-@var{n} character sets could be implemented, but we don't have
1397 them yet.
1399 @findex standard-display-8bit
1400 @cindex 8-bit display
1401   Normally non-ISO-8859 characters (decimal codes between 128 and 159
1402 inclusive) are displayed as octal escapes.  You can change this for
1403 non-standard ``extended'' versions of ISO-8859 character sets by using the
1404 function @code{standard-display-8bit} in the @code{disp-table} library.
1406   There are two ways to input single-byte non-@acronym{ASCII}
1407 characters:
1409 @itemize @bullet
1410 @cindex 8-bit input
1411 @item
1412 You can use an input method for the selected language environment.
1413 @xref{Input Methods}.  When you use an input method in a unibyte buffer,
1414 the non-@acronym{ASCII} character you specify with it is converted to unibyte.
1416 @item
1417 If your keyboard can generate character codes 128 (decimal) and up,
1418 representing non-@acronym{ASCII} characters, you can type those character codes
1419 directly.
1421 On a graphical display, you should not need to do anything special to use
1422 these keys; they should simply work.  On a text-only terminal, you
1423 should use the command @code{M-x set-keyboard-coding-system} or the
1424 variable @code{keyboard-coding-system} to specify which coding system
1425 your keyboard uses (@pxref{Terminal Coding}).  Enabling this feature
1426 will probably require you to use @kbd{ESC} to type Meta characters;
1427 however, on a console terminal or in @code{xterm}, you can arrange for
1428 Meta to be converted to @kbd{ESC} and still be able type 8-bit
1429 characters present directly on the keyboard or using @kbd{Compose} or
1430 @kbd{AltGr} keys.  @xref{User Input}.
1432 @kindex C-x 8
1433 @cindex @code{iso-transl} library
1434 @cindex compose character
1435 @cindex dead character
1436 @item
1437 For Latin-1 only, you can use the key @kbd{C-x 8} as a ``compose
1438 character'' prefix for entry of non-@acronym{ASCII} Latin-1 printing
1439 characters.  @kbd{C-x 8} is good for insertion (in the minibuffer as
1440 well as other buffers), for searching, and in any other context where
1441 a key sequence is allowed.
1443 @kbd{C-x 8} works by loading the @code{iso-transl} library.  Once that
1444 library is loaded, the @key{ALT} modifier key, if the keyboard has
1445 one, serves the same purpose as @kbd{C-x 8}: use @key{ALT} together
1446 with an accent character to modify the following letter.  In addition,
1447 if the keyboard has keys for the Latin-1 ``dead accent characters,''
1448 they too are defined to compose with the following character, once
1449 @code{iso-transl} is loaded.
1451 Use @kbd{C-x 8 C-h} to list all the available @kbd{C-x 8} translations.
1452 @end itemize
1454 @node Charsets
1455 @section Charsets
1456 @cindex charsets
1458   Emacs groups all supported characters into disjoint @dfn{charsets}.
1459 Each character code belongs to one and only one charset.  For
1460 historical reasons, Emacs typically divides an 8-bit character code
1461 for an extended version of @acronym{ASCII} into two charsets:
1462 @acronym{ASCII}, which covers the codes 0 through 127, plus another
1463 charset which covers the ``right-hand part'' (the codes 128 and up).
1464 For instance, the characters of Latin-1 include the Emacs charset
1465 @code{ascii} plus the Emacs charset @code{latin-iso8859-1}.
1467   Emacs characters belonging to different charsets may look the same,
1468 but they are still different characters.  For example, the letter
1469 @samp{o} with acute accent in charset @code{latin-iso8859-1}, used for
1470 Latin-1, is different from the letter @samp{o} with acute accent in
1471 charset @code{latin-iso8859-2}, used for Latin-2.
1473 @findex list-charset-chars
1474 @cindex characters in a certain charset
1475 @findex describe-character-set
1476   There are two commands for obtaining information about Emacs
1477 charsets.  The command @kbd{M-x list-charset-chars} prompts for a name
1478 of a character set, and displays all the characters in that character
1479 set.  The command @kbd{M-x describe-character-set} prompts for a
1480 charset name and displays information about that charset, including
1481 its internal representation within Emacs.
1483   To find out which charset a character in the buffer belongs to,
1484 put point before it and type @kbd{C-u C-x =}.
1486 @ignore
1487    arch-tag: 310ba60d-31ef-4ce7-91f1-f282dd57b6b3
1488 @end ignore