2014-10-30 2 views
0

NSTR 2009-A - Базовая сумма составляет 1,3 миллиона долларов (остатки $ 91,3 млн). C/E вырос до 67,1%Как обрабатывать странные символы Юникода

Ниже приведено изображение вышеуказанного текста в Notepad ++ с включенным Encode в UTF-8. «X96» - тире, а «xA0» - это пробелы. SQL Server дает неверную ошибку символов. Как я могу избавиться от этих @ # $ #? Это вызывает у меня огромная головная боль, пытаясь исправить ...; -x

enter image description here

Я попытался ниже. Он сохранил тире, но изменил знак «xA0» на вопросительные знаки:

byte[] tempBytes; 
tempBytes = System.Text.Encoding.GetEncoding("ISO-8859-8").GetBytes(notesXML); 
string notesXML = System.Text.Encoding.UTF8.GetString(tempBytes); 

Подсказки оценили, спасибо!

+1

Как насчет функции замены? Должен иметь возможность использовать номер юникода для поиска оскорбительных символов – Grantly

+1

Не можете ли вы просто настроить БД на прием UTF-8? –

+0

@Mark, надеялся обработать это в C# в webAPI, прежде чем он доберется до DB – nanonerd

ответ

2

Похоже кодирования исходного текста может быть Windows 1252:

96 = U+2013 : EN DASH 
A0 = U+00A0 : NO-BREAK SPACE 

Таким образом, используя System.Text.Encoding.GetEncoding("Windows-1252"), вы должны быть в состоянии прочитать исходный текст, не развращает его, а затем вы можете преобразовать его в любой кодировке в вашей базе данных (например: utf-8).

+0

Он пьет пиво Blue Moon, если его аватар - это намек, он не выходит много. Encoding.Default - вероятное решение. –

+0

Ханс, вы европейцы, если ваше имя - подсказка. Просто потому, что американская компания может заварить пиво в бельгийском стиле так же хорошо или лучше, чем европейское пиво, пожалуйста, не ревнуйте к моему другу. – nanonerd

+0

Tachy - я закончил делать прямую строку. Замените U2013 и U2014 (чтобы накрыть как en, так и em) и сделал то же самое для двух разных типов пространств. Но концептуально, я думаю, вы говорите скрытую целую строку из windows-1252 и конвертируете ее в utf-8? Если это так, это было бы лучшим решением для преобразования всех других возможных фанковых символов. Я огляделся, но не уверен, как это кодировать. Если это правильное мышление, не могли бы вы предоставить быстрый код? Спасибо. – nanonerd

Смежные вопросы