ToUpper
От: _Winnie Россия C++.freerun
Дата: 18.10.05 17:28
Оценка:
Пробую:

string s1 = "die groß Straße".ToUpper();

Не получается.
Пробую так:

string s2 = "die groß Straße".ToUpper(new System.Globalization.CultureInfo("de-DE"));


Все равно не получается. ß как было ß, так и остаётся, в SS не превращается.

Что я делаю не так?
Правильно работающая программа — просто частный случай Undefined Behavior
Re: ToUpper
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.10.05 19:18
Оценка:
Здравствуйте, _Winnie, Вы писали:

_W>Что я делаю не так?


Да, непонятно что ты вообще пыташся сделать. Что ты хочешь от ß? Это же какие-то ХМЛ-кодировки. Если ты хочешь задать юникодный символ, то делай это чере \uXXXX где XXXX это номер символа.

Ну, а можно вообще жить по простому. Шарп поддерживает Юникод. Так что ты можешь записать файл в UTF-16 и вписывать в строки любые расширенные символы. Студия тоже позволяет редактировать Юникодные файлы.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: ToUpper
От: agos Россия http://trtrmitya.wordpress.com
Дата: 18.10.05 19:26
Оценка:
Здравствуйте, _Winnie, Вы писали:

_W>Пробую:


_W>
_W>string s1 = "die groß Straße".ToUpper();
_W>

а если просто так:
string s1 = ("die gro" + (char)223 + " Stra" + (char)223 + "e").ToUpper();
... << RSDN@Home 1.2.0 alpha rev. 618>>
Не переходите улицу на тот свет..
Re[2]: ToUpper
От: _Winnie Россия C++.freerun
Дата: 18.10.05 19:35
Оценка:
Здравствуйте, agos, Вы писали:

A>Здравствуйте, _Winnie, Вы писали:


_W>>Пробую:


A>а если просто так:

A>
A>string s1 = ("die gro" + (char)223 + " Stra" + (char)223 + "e").ToUpper();
A>


Тоже самое. оставляет ß как ß.
Правильно работающая программа — просто частный случай Undefined Behavior
Re[2]: ToUpper
От: agos Россия http://trtrmitya.wordpress.com
Дата: 18.10.05 19:58
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, _Winnie, Вы писали:


_W>>Что я делаю не так?


VD>Да, непонятно что ты вообще пыташся сделать. Что ты хочешь от ß? Это же какие-то ХМЛ-кодировки. Если ты хочешь задать юникодный символ, то делай это чере \uXXXX где XXXX это номер символа.


VD>Ну, а можно вообще жить по простому. Шарп поддерживает Юникод. Так что ты можешь записать файл в UTF-16 и вписывать в строки любые расширенные символы. Студия тоже позволяет редактировать Юникодные файлы.


Это проблема Януса, мы прочитали "& # 2 2 3" в то время как на сайте и в почту приходит нормальный символ (правда не знаю как он зовется)
... << RSDN@Home 1.2.0 alpha rev. 618>>
Не переходите улицу на тот свет..
Re[3]: ToUpper
От: agos Россия http://trtrmitya.wordpress.com
Дата: 18.10.05 20:12
Оценка: 20 (2)
Здравствуйте, _Winnie, Вы писали:


_W>Тоже самое. оставляет ß как ß.

Well, I have a comment, but things are working as designed so nothing is going to be "fixed". I will explain....

In the German language, the Sharp S ("?" or U+00df) is a lowercase letter, and it capitalizes to the letters "SS". Now Microsoft's casing tables only support simple Unicode casing, which does not include any rules that would change the size of the string such as this one. So doing a "?".ToUpper() call will not return "SS".

Взято отсюда

Можно сказать не повезло и ждать пока MS исправит это дело...
... << RSDN@Home 1.2.0 alpha rev. 618>>
Не переходите улицу на тот свет..
Re[3]: ToUpper
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.10.05 20:22
Оценка:
Здравствуйте, agos, Вы писали:

A>Это проблема Януса, мы прочитали "& # 2 2 3" в то время как на сайте и в почту приходит нормальный символ (правда не знаю как он зовется)


Казалось бы причем тут Янус если в примере константная строка?

В общем, если в строке ß то нужно ее перекодировать и потом уже изменять. Тут где-то была ссылка на класс позволяющий перекодировать символы закодированные в ХТМЛ-кодировке.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: ToUpper
От: agos Россия http://trtrmitya.wordpress.com
Дата: 18.10.05 20:45
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, agos, Вы писали:


A>>Это проблема Януса, мы прочитали "& # 2 2 3" в то время как на сайте и в почту приходит нормальный символ (правда не знаю как он зовется)


VD>Казалось бы причем тут Янус если в примере константная строка?

Янус при том, что неправильно отображает
на сайте видна германская буква (похожая на B), а Янус показывает & # 2 2 3 ;

VD>В общем, если в строке ß то нужно ее перекодировать и потом уже изменять. Тут где-то была ссылка на класс позволяющий перекодировать символы закодированные в ХТМЛ-кодировке.

А во что её перекодировать? В строке же нету html-кодировок, а есть unicode-символ

проблема именно в том, что
((char)223).ToString().ToUpper()==((char)223).ToString().ToLower()
true

а должно быть false
... << RSDN@Home 1.2.0 alpha rev. 618>>
Не переходите улицу на тот свет..
Re[5]: ToUpper
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.10.05 21:37
Оценка:
Здравствуйте, agos, Вы писали:

A>Янус при том, что неправильно отображает

A>на сайте видна германская буква (похожая на B), а Янус показывает & # 2 2 3 ;

Понял. Так бы и сказал, что нужно смотреть через веб.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: ToUpper
От: Cuanche  
Дата: 24.10.05 12:45
Оценка:
Здравствуйте, _Winnie, Вы писали:

_W>Пробую:


_W>
_W>string s1 = "die groß Straße".ToUpper();
_W>

_W>Не получается.
_W>Пробую так:

_W>
_W>string s2 = "die groß Straße".ToUpper(new System.Globalization.CultureInfo("de-DE"));
_W>


_W>Все равно не получается. ß как было ß, так и остаётся, в SS не превращается.


Вообще-то не "die groß Straße", а "die große Straße", если уж на то пошло
А вообще-то проще заменять руками. MS Word заменяет große на GROSSE, но при обратной смене регистра оставляет grosse, что не есть хорошо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.