@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+@c Copyright (C) 1998, 1999, 2002, 2003, 2004,
+@c 2005, 2006 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../info/characters
@node Non-ASCII Characters, Searching and Matching, Text, Top
@defvar translation-table-for-input
Self-inserting characters are translated through this translation
-table before they are inserted. This variable automatically becomes
-buffer-local when set.
+table before they are inserted. Search commands also translate their
+input through this table, so they can compare more reliably with
+what's in the buffer.
@code{set-buffer-file-coding-system} sets this variable so that your
keyboard input gets translated into the character sets that the buffer
-is likely to contain.
+is likely to contain. This variable automatically becomes
+buffer-local when set.
@end defvar
@node Coding Systems
conversion, but some of them leave the choice unspecified---to be chosen
heuristically for each file, based on the data.
-In general, a coding system doesn't guarantee a roundtrip identity,
-i.e. decoding followed by encoding in the same coding system can
-result in the different byte sequence. But there are several coding
-systems that go guarantee that the result will be the same as what you
-originally decoded. They are:
+ In general, a coding system doesn't guarantee roundtrip identity:
+decoding a byte sequence using coding system, then encoding the
+resulting text in the same coding system, can produce a different byte
+sequence. However, the following coding systems do guarantee that the
+byte sequence will be the same as what you originally decoded:
@quotation
chinese-big5 chinese-iso-8bit cyrillic-iso-8bit emacs-mule
japanese-iso-8bit japanese-shift-jis korean-iso-8bit raw-text
@end quotation
-Likewise, a coding systme doesn't guarantee the other way of roundtrip
-identity, i.e. encoding buffer text into a coding system followed by
-decoding again with the same coding system will produce the different
-buffer text. For instance, when you encode Latin-2 characters by
-@code{utf-8} and decode it back by the same coding system, you'll get
-Unicode charactes (of charset @code{mule-unicode-0100-24ff}), and when
-you encode Unicode characters by @code{iso-latin-2} and decode it back
-by the same coding system, you'll get Latin-2 characters.
+ Encoding buffer text and then decoding the result can also fail to
+reproduce the original text. For instance, if you encode Latin-2
+characters with @code{utf-8} and decode the result using the same
+coding system, you'll get Unicode characters (of charset
+@code{mule-unicode-0100-24ff}). If you encode Unicode characters with
+@code{iso-latin-2} and decode the result with the same coding system,
+you'll get Latin-2 characters.
@cindex end of line conversion
@dfn{End of line conversion} handles three different conventions used
you will want to find out afterwards which coding system was chosen.
@defvar buffer-file-coding-system
-This variable records the coding system that was used for visiting the
-current buffer. It is used for saving the buffer, and for writing part
+This buffer-local variable records the coding system that was used to visit
+the current buffer. It is used for saving the buffer, and for writing part
of the buffer with @code{write-region}. If the text to be written
cannot be safely encoded using the coding system specified by this
variable, these operations select an alternative encoding by calling
@var{encoding-system} is the coding system for encoding (in case
@var{operation} does encoding).
-The argument @var{operation} should be a symbol, one of
-@code{insert-file-contents}, @code{write-region}, @code{call-process},
-@code{call-process-region}, @code{start-process}, or
-@code{open-network-stream}. These are the names of the Emacs I/O primitives
-that can do coding system conversion.
+The argument @var{operation} should be a symbol, any one of
+@code{insert-file-contents}, @code{write-region},
+@code{start-process}, @code{call-process}, @code{call-process-region},
+or @code{open-network-stream}. These are the names of the Emacs I/O
+primitives that can do coding system conversion.
The remaining arguments should be the same arguments that might be given
to that I/O primitive. Depending on the primitive, one of those
target. For @code{open-network-stream}, the target is the service name
or port number.
-This function looks up the target in @code{file-coding-system-alist},
-@code{process-coding-system-alist}, or
-@code{network-coding-system-alist}, depending on @var{operation}.
+Depending on @var{operation}, this function looks up the target in
+@code{file-coding-system-alist}, @code{process-coding-system-alist},
+or @code{network-coding-system-alist}.
@end defun
@node Specifying Coding Systems