11 - fix table 11.1

This commit is contained in:
Тарас 2025-01-12 09:46:42 +01:00 committed by 221V
parent 45190add84
commit 4299579a93
1 changed files with 11 additions and 11 deletions

View File

@ -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.