11 - fix table 11.1
This commit is contained in:
parent
45190add84
commit
4299579a93
|
@ -53,17 +53,17 @@
|
|||
|
||||
*Таблица 11.1. Для различения файлов с исходным кодом на D используют ся метки порядка байтов. Шаблоны проверяются сверху вниз, первое же совпадение при сопоставлении устанавливает кодировку файла. `xx` – любое ненулевое значение байта*
|
||||
|
||||
|Если первые байты...|...то кодировка файла – ...|Игнорировать эти байты?|
|
||||
|-|-|:-:|
|
||||
|`00 00 FE FF`|UTF-32 с прямым порядком байтов[^1]|✓|
|
||||
|`FF FE 00 00`|UTF-32 с обратным порядком байтов[^2]|✓|
|
||||
|`FE FF`|UTF-16 с прямым порядком байтов|✓|
|
||||
|`FF FE`|UTF-16 с обратным порядком байтов|✓|
|
||||
|`00 00 00 xx`|UTF-32 с прямым порядком байтов||
|
||||
|`xx 00 00 00`|UTF-32 с обратным порядком байтов||
|
||||
|`00 xx`|UTF-16 с прямым порядком байтов||
|
||||
|`xx 00`|UTF-16 с обратным порядком байтов||
|
||||
|Что-то другое|UTF-8||
|
||||
| Если первые байты... | ...то кодировка файла – ... | Игнорировать эти байты? |
|
||||
| --- | --- | :-: |
|
||||
| `00 00 FE FF` | UTF-32 с прямым порядком байтов[^1] | ✓ |
|
||||
| `FF FE 00 00` | UTF-32 с обратным порядком байтов[^2] | ✓ |
|
||||
| `FE FF` | UTF-16 с прямым порядком байтов | ✓ |
|
||||
| `FF FE` | UTF-16 с обратным порядком байтов | ✓ |
|
||||
| `00 00 00 xx` | UTF-32 с прямым порядком байтов | |
|
||||
| `xx 00 00 00` | UTF-32 с обратным порядком байтов | |
|
||||
| `00 xx` | UTF-16 с прямым порядком байтов | |
|
||||
| `xx 00` | UTF-16 с обратным порядком байтов | |
|
||||
| Что-то другое | UTF-8 | |
|
||||
|
||||
В некоторых файлах метка порядка байтов отсутствует, но у D есть средство, позволяющее автоматически недвусмысленно определить кодировку. Процедура автоопределения тонко использует тот факт, что любой правильно построенный модуль на D должен начинаться хотя бы с нескольких знаков, встречающихся в кодировке ASCII, то есть с кодовых точек Юникода со значением меньше 128. Ведь в соответствии с грамматикой D правильно построенный модуль должен начинаться или с ключевого слова языка D (состоящего из знаков Юникода с ASCII-кодами), или с ASCII-пробела, или с комментария, который начинается с ASCII-знака `/`, или с пары директив, начинающихся с `#`, которые также должны состоять из ASCII-знаков. Если выполнить проверку на соответствие шаблонам из табл. 11.1, перебирая эти шаблоны сверху вниз, первое же совпадение недвусмысленно укажет кодировку. Если кодировка определена ошибочно, вреда от этого все равно не будет – файл, несомненно, и так ошибочен, поскольку начинается со знаков, которые не может содержать корректный код на D.
|
||||
|
||||
|
|
Loading…
Reference in New Issue