Windows API: ANSI и строки с расширенными символами - это UTF8 или ASCII? UTF-16 или UCS-2 LE?

Я не совсем профессионал в кодировках, но вот что я знаю (хотя может и ошибаться):

  1. ASCII - это 7-битный код фиксированной длины. кодировка с символами, которые вы можете найти в диаграммах ASCII.
  2. UTF8 - это 8-битная кодировка переменной длины. Все символы могут быть записаны в UTF8.
  3. UCS-2 LE / BE - это 16-битные кодировки фиксированной длины, которые поддерживают наиболее распространенные символы.
  4. UTF-16 - 16-битные кодировки переменной длины. Все символы могут быть записаны в кодировке UTF16.

Верны ли они прежде всего?

Теперь по вопросам:

  1. Функции Windows «A» (например, SetWindowTextA ) принимают строки ASCII ? Или «многобайтовые строки» (дополнительные вопросы по этому поводу ниже)?
  2. Функции Windows «W» принимают строки UTF-16 или строки UCS-2? Я думал они принимают в UCS-2, но имена меня смущают.
  3. В WideCharToMultiByte Microsoft использует слово «строка широких символов» для обозначения UTF-16. Что в этом контексте считается «многобайтовой строкой»? UTF-8?
  4. Является ли LPWSTR «строкой расширенных символов»? Я бы сказал, что это так, но разве это не значит, что это UTF-16? И разве это не значит, что его можно использовать для отображения, скажем, 4-байтовых символов? Если нет, то ... невозможно ли отобразить 4-байтовые символы? (Windows, похоже, не имеет для них API.)
  5. Является ли функциональность WideCharToMultiByte надмножеством функциональности wcstombs , и работают ли они с одним и тем же типом строка? Или один, скажем, работают с UTF-16, а другие работают с UCS-2?
  6. Пути к файлам указаны в UTF-16 или UCS-2? Я знаю, что Windows рассматривает его как «непрозрачный массив символов» из документации Microsoft, но в соответствии со стандартом C для таких функций, как fwprintf , существует ли какая-либо стандартизованная кодировка?
  7. Что такое кодировка «ANSI»? Это вообще правильный термин? И как это связано с ASCII?
  8. (У меня было еще вопросы, но этого достаточно ... Я все равно забыл некоторые из них ...)

Это много вопросов, поэтому любые ссылки на объяснения по Мы также будем очень признательны за то, как все это подключается (кроме чтения стандарта Unicode, который в любом случае не поможет с Windows API).

Спасибо!

31
задан Mehrdad 4 January 2011 в 09:45
поделиться