C-standard : Zeichensatz und Kodierung Spezifikation

Fand ich den C-standard (C99 und C11) vage mit Bezug auf Zeichen/Zeichenfolge code-Positionen und encoding rules:

Erstens definiert der standard the source character set und the execution character set.
Im wesentlichen gibt es eine Reihe von Glyphen, aber nicht zuordnen beliebiger numerischer Werte
mit Ihnen - Also, was ist der Standard-Zeichensatz?

Ich verlange nicht die Kodierung hier aber nur die Glyphe/repertoire, um numerische - /code-Punkt-mapping.
Es tut definieren universal character names als ISO/IEC 10646, aber es bedeutet, dass
dies ist die Standard-Zeichenkodierung?

Als eine Erweiterung des oben - ich konnte nichts finden, was besagt, welche Zeichen
die numerische escape-Sequenzen \0 und \x stellen.

Aus der C-standards (C99 und C11, die ich nicht überprüfen, ANSI-C) habe ich die folgende
Wissenswertes zu Zeichen-und string-Literale:

 +---------+-----+------------+----------------------------------------------+
 | Literal | Std | Type       | Meaning                                      |
 +---------+-----+------------+----------------------------------------------+
 | '...'   | C99 | int        | An integer character constant is a  sequence |
 |         |     |            | of one or more multibyte characters          |
 | L'...'  | C99 | wchar_t    | A wide character constant is a sequence of   |
 |         |     |            | one or more multibyte characters             |
 | u'...'  | C11 | char16_t   | A wide character constant is a sequence of   |
 |         |     |            | one or more multibyte characters             |
 | U'...'  | C11 | char32_t   | A wide character constant is a sequence of   |
 |         |     |            | one or more multibyte characters             |
 | "..."   | C99 | char[]     | A character string literal is a sequence of  |
 |         |     |            | zero or more multibyte characters            |   
 | L"..."  | C99 | wchar_t[]  | A wide string literal is a sequence of zero  |
 |         |     |            | or more multibyte characters                 | 
 | u8"..." | C11 | char[]     | A UTF-8 string literal is a sequence of zero |
 |         |     |            | or more multibyte characters                 | 
 | u"..."  | C11 | char16_t[] | A wide string literal is a sequence of zero  |
 |         |     |            | or more multibyte characters                 | 
 | U"..."  | C11 | char32_t[] | A wide string literal is a sequence of zero  |
 |         |     |            | or more multibyte characters                 | 
 +---------+-----+------------+----------------------------------------------+

Konnte ich aber nicht finden, nichts über das encoding-Regeln für diese Literale.
UTF-8 scheint anzudeuten UTF-8-Codierung, aber ich glaube nicht, dass es explizit erwähnt
überall. Auch für die anderen Arten ist die Codierung undefined oder implementation abhängig?

Ich bin nicht zu vertraut mit die der UNIX-Spezifikation. Nicht die der UNIX-Spezifikation angeben, jede zusätzliche Einschränkung(en) auf diese Regeln?

Auch wenn jemand mir sagen kann, was charset/encoding-Schema verwendet, von GCC und MSVC das würde auch helfen.

InformationsquelleAutor tinkerbeast | 2012-08-30
Schreibe einen Kommentar