У меня есть приложение, которое использует ° (символ степени, ANSI # 176) в разных местах, и я не могу понять разные способы его отображения - некоторые из них правильные, но другие выглядят так, как если бы была конверсия в UTF-8, а затем обратно в ANSI. Как правило, он отображается ОК в TLabels, но не TEdits, а иногда нормально в TRichEdit. Перекомпиляция в XE5 не делает заметной разницы. Поэтому мой вопрос: как я получу # 176, чтобы последовательно появляться на западных и восточных ОС.Что такое D2007 с символами степени на японском/корейском/китайском языке?
ответ
Весь ваш подход является ошибочным. Символ, на который вы ссылаетесь, № 176 - это символ степени на некоторых кодовых страницах ANSI, но не все. И в дальневосточных локациях, где используются двухбайтовые символьные наборы, № 176 бессмысленна сама по себе. Потому что это часть двухбайтового символа. Если вы хотите, чтобы ваше приложение хорошо работало во всех локалях, вам нужно будет его кодировать с использованием текста Юникода.
Вы утверждаете, что переход на XE5 не помогает. Ясно, что вы не делаете это правильно. XE5 имеет полную и всестороннюю поддержку Unicode. Если вы используете его правильно, он решит вашу проблему.
Не смертельно ошибочно. Надеюсь, и поскольку моя главная цель - заставить эту работу работать в D2007, я хотел бы разобраться в ее поведении. Любопытно, что код, такой как Label1.Caption: = '° F ºF' + # 176 + 'F' + # 186 + 'F', выдает мусор (даже не китайские иероглифы по словам моего коллеги), но StringGrid1.Cells [1 , 1]: = Char (176); работает, как ожидалось. Это в D2007 BTW. – user3359525
@ user3359525 Да, полностью испорчен. Он никогда не будет работать в D2007 с использованием ANSI. Вы должны помнить, что страницы кода, о которых вы говорите, являются страницами с двойным байтом. Вам нужно использовать Unicode. –
@ user3359525 Я очень удивлен, что вы говорите, что он работает, как ожидалось, с сеткой строк в D2007. Является ли ваша строковая сетка стандартным Delphi TStringGrid, или вы используете какую-то обычную стороннюю сетку? – hvd
- 1. Что такое _ | _ на языке Ruby?
- 2. Что такое stdin на языке C?
- 3. Что такое newlib на языке C?
- 4. Что такое спецификаторы декларатора на языке C?
- 5. Что такое «Производство» на простом английском языке?
- 6. Что такое (* это) на языке c?
- 7. Что такое \ r на языке C?
- 8. Что такое понятие степени на кривой B-сплайна?
- 9. Что такое PR в Angular языке?
- 10. Что такое «указатель на указатель» на языке c?
- 11. Что такое глобальный _start в языке ассемблера?
- 12. Что такое .nan в языке программирования D?
- 13. Что означает ** на языке C?
- 14. D2007 ClientDataset
- 15. Что такое $ в языке ассемблера nasm?
- 16. Что такое "Структурированный" в языке структурированных запросов?
- 17. что такое странное использование в языке C
- 18. Что такое «веб-сервис» на простом английском языке?
- 19. Что такое распределенные (многоуровневые) системы на простом английском языке?
- 20. Что такое использование FROM на языке запросов Azure DocumentDB SQL?
- 21. Что такое «транзакционная единица работы» на простом английском языке?
- 22. Что такое хороший способ взять дробные степени матрицы в MATLAB?
- 23. Xcode: Что такое цель и схема на понятном языке?
- 24. Что такое «широкая строка символов» на языке C?
- 25. Что такое эквалайзер JavaScript s.replace (/ [^ \ w] +/g, '-') "на языке Dart?
- 26. Что такое эквивалент доходности на языке программирования D?
- 27. Что такое WSGI и CGI на простом английском языке?
- 28. Что такое «группа» от Gemfiles на рубиновом языке?
- 29. Что такое начальный индекс списка на языке PowerBuilder?
- 30. На английском языке, что такое префикс, постфикс, инфикс в Свифт?
'# 176' - это только символ степени на некоторых кодовых страницах. Это не может работать на системах, использующих другую кодовую страницу. Вы говорите, что это все еще не работает в XE5. Должно. D2009 и выше, включая XE5, используют строки Unicode, которые ведут себя одинаково во всех версиях Windows. Можете ли вы опубликовать простой пример, который показывает проблему на XE5? – hvd
Но он должен работать на системах, на которых # 176 является символом степени на текущей кодовой странице, и, насколько я могу судить, (не владея ничем иным, кроме английского), что это имеет место на всех дальневосточных OS я пробовал. Charmap.exe показывает 0xB0 как «символ степени» для всех перечисленных наборов символов. – user3359525
В Charmap нажмите «Расширенный вид», и вы увидите, что набор символов - Unicode. Чтобы увидеть некоторые символы кодовых страниц, выберите другой набор символов в этом выпадающем списке. – hvd