C #: Как преобразовать символ Unicode в его эквивалент ASCII - PullRequest
0 голосов
/ 28 февраля 2011

Я знаю, что это повторяющийся вопрос здесь, но ни один из ответов не работает для меня.

Из системы я получаю текст Unicode.Просто электронное письмо + имя от клиентов.

Когда я записываю эти строки в свою базу данных SQL, появляется несколько символов с \ u.

Например, электронные письма попадают в базу данных: name \u0040domain.com

Как преобразовать строку Unicode в моей программе на c # в ascii, чтобы БД получала name@domain.com.

Также, которые заменяют специальные символы эквивалентными или ни на кого.. Например от "Эрнан π" до "Эрнан"

Спасибо!

Ответы [ 2 ]

2 голосов
/ 28 февраля 2011

ИМХО преобразование Unicode обратно в ASCII для некоторого сомнительного хранения или технической выгоды не является хорошей идеей в 21-м веке, тем более, что электронная почта была изменена для поддержки Unicode в заголовках и телах.

http://en.wikipedia.org/wiki/Unicode_and_e-mail

Если причина, по которой вы хотите конвертировать Hernán в Hernan, заключается в поиске, вам следует рассмотреть использование сортировки Accent Insensitive (AI) в вашей базе данных или заставить его это сделать - см. SO post .

Одна вещь, которую вам может понадобиться перепроверить, однако, это то, что ваши строки не получают предварительно закодированы перед хранением в вашей базе данных (при условии, что ваш столбец БД настроен на прием Unicode - то есть NVARCHAR и т. Д.), Символ '@' должен быть хранится как '@' (0040 в UTF 16), а не как '\ u0040'.

EDIT: Кодировка \ uNNNN в строке может происходить из Java или Python. Возможно, вам удастся отследить данные строки электронной почты в вашей архитектуре, чтобы найти источник этой кодировки и изменить его на более простое для декодирования в C #, например UTF-8.

Как мне трактовать ASCII-строку как юникод и выводить экранированные символы в ней в python?

0 голосов
/ 28 февраля 2011

Вы можете использовать Encoding.Convert для таких операций. Читайте об этом на MSDN

...