[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Top] [Table des matières] [Index] [ ? ]

33.10.7 Explicit Encoding and Decoding

All the operations that transfer text in and out of Emacs have the ability to use a coding system to encode or decode the text. You can also explicitly encode and decode text using the functions in this section.

The result of encoding, and the input to decoding, are not ordinary text. They logically consist of a series of byte values; that is, a series of characters whose codes are in the range 0 through 255. In a multibyte buffer or string, character codes 128 through 159 are represented by multibyte sequences, but this is invisible to Lisp programs.

The usual way to read a file into a buffer as a sequence of bytes, so you can decode the contents explicitly, is with insert-file-contents-literally (voir la section Reading from Files); alternatively, specify a non-nil rawfile argument when visiting a file with find-file-noselect. These methods result in a unibyte buffer.

The usual way to use the byte sequence that results from explicitly encoding text is to copy it to a file or process—for example, to write it with write-region (voir la section Writing to Files), and suppress encoding by binding coding-system-for-write to no-conversion.

Here are the functions to perform explicit encoding or decoding. The encoding functions produce sequences of bytes; the decoding functions are meant to operate on sequences of bytes. All of these functions discard text properties.

Command: encode-coding-region start end coding-system

This command encodes the text from start to end according to coding system coding-system. The encoded text replaces the original text in the buffer. The result of encoding is logically a sequence of bytes, but the buffer remains multibyte if it was multibyte before.

This command returns the length of the encoded text.

Function: encode-coding-string string coding-system &optional nocopy

This function encodes the text in string according to coding system coding-system. It returns a new string containing the encoded text, except when nocopy is non-nil, in which case the function may return string itself if the encoding operation is trivial. The result of encoding is a unibyte string.

Command: decode-coding-region start end coding-system

This command decodes the text from start to end according to coding system coding-system. The decoded text replaces the original text in the buffer. To make explicit decoding useful, the text before decoding ought to be a sequence of byte values, but both multibyte and unibyte buffers are acceptable.

This command returns the length of the decoded text.

Function: decode-coding-string string coding-system &optional nocopy

This function decodes the text in string according to coding system coding-system. It returns a new string containing the decoded text, except when nocopy is non-nil, in which case the function may return string itself if the decoding operation is trivial. To make explicit decoding useful, the contents of string ought to be a sequence of byte values, but a multibyte string is acceptable.

Function: decode-coding-inserted-region from to filename &optional visit beg end replace

This function decodes the text from from to to as if it were being read from file filename using insert-file-contents using the rest of the arguments provided.

The normal way to use this function is after reading text from a file without decoding, if you decide you would rather have decoded it. Instead of deleting the text and reading it again, this time with decoding, you can call this function.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Top] [Table des matières] [Index] [ ? ]

Ce document a été généré par Eric Reinbold le 13 Octobre 2007 en utilisant texi2html 1.78.