Обращаясь к некоторым вашим вопросам ...
- нужна ли моему приложению поддержка юникода для отображения корейского и японского языков?
- Если это так, - просто для интереса - почему русский работает без, так как у них есть кириллический набор букв?
Русский вписывается в однобайтовую кодировку, как и западноевропейские языки (хотя это другая кодировка). Корейский и японский (и китайский) нет. Есть много обходных путей для этого, но самый элегантный из известных мне на сегодняшний день - это использование Unicode, чтобы вам не нужно было перестраивать приложение для каждой локали; просто измените каталог сообщений.
- Общий вопрос по Юникоду: я использую эти строковые литералы во многих описательных и во многих технических отношениях ... в качестве отображаемого текста, а также частей шейдеров GLSL и XML. Эти API имеют char * / const char * в качестве аргументов функции, поэтому мое внутреннее представление wxString не должно иметь значения в этих областях. Теория и практика: правда ли это? Кто-нибудь может поделиться опытом?
Только строки, которые будут показаны (не технически) пользователям, должны быть локализованы, поэтому они единственные, которые должны быть в Unicode. Наиболее распространенным подходом является использование UTF-8 (который является особым способом кодирования Unicode), поскольку это означает, что строки ASCII - наиболее распространенный тип, передаваемый внутри программ - абсолютно одинаковы, что значительно упрощает работу. Недостатком является то, что у вас больше нет дешевого индексирования в строке, поскольку не все символы имеют одинаковое количество байтов в длину. Это может быть что угодно, от не проблема до правильного королевского препятствия PITA, в зависимости от того, что делает программа.
- Я занимаюсь какой-либо обработкой текста (сравнение, поиск строк и т. Д.) - есть ли логические различия между юникодом и ansi?
Сравнения работают нормально, как и простой поиск строк. Другие операции (например, получение 20 th символа строки или определение количества символов в строке, которые вы нашли в подстроке) являются неприятными, поскольку у вас нет постоянной ширины символов. Гадость может быть уменьшена с помощью широких символов, но их менее удобно использовать для внешних данных (они создают потенциальные проблемы с порядком байтов, если вы не начнете работать с метками порядка байтов, и это совсем другое дело).
- Есть ли какое-либо ремаркируемое влияние на производительность при использовании Unicode?
Зависит от того, что именно вы делаете. С UTF-8, если вы в основном имеете дело с текстом ASCII, то у вас очень мало проблем с производительностью для большинства операций. С широкими символами вы тратите больше памяти на каждый символ, что, естественно, влияет на производительность (но это может быть приемлемо, поскольку это означает, что у вас есть индексирование с постоянным временем).