Набор символов расширенного текстового поля

Когда я копирую, например, слово «amlık» с веб-страницы в поле форматированного текста (приложение форм) во время выполнения, оно отображается как «? Aml? K». Есть ли параметр в элементе управления Richtextbox, форме или приложении, чтобы исправить это? Если нет, то что такое «социально приемлемый» метод?

(.Net 2008)


person xpda    schedule 20.09.2009    source источник


Ответы (3)


Я думаю, что это может быть связано с настройкой шрифтов в richtextbox, который, похоже, не поддерживает диапазон символов, который вы вставляете.

Попробуйте установить шрифт, который поддерживает диапазон символов Юникода, которые вы вставляете. Попробуйте Arial Unicode MS и посмотрите, работает ли это.

РЕДАКТИРОВАТЬ: Кстати, есть ли на сайте, с которого вы копируете текст, элементы в Юникоде?
Возможно, на сайте может быть текст в ASCII и использовать определенный шрифт для его отображения для определенного языка.

person shahkalpeshp    schedule 20.09.2009
comment
Я не уверен, каков настоящий ответ (был), но я выберу это в качестве ответа из-за хороших предложений. - person xpda; 21.09.2009

Какой шрифт используется в вашем текстовом поле? Когда я использую шрифт по умолчанию в крошечной тестовой программе, он отлично работает:

using System.Windows.Forms;

class Test
{
    static void Main()
    {
        RichTextBox tb = new RichTextBox();
        Form form = new Form();
        form.Controls.Add(tb);
        Application.Run(form);
    }
}

Это вырезание из Chrome в Vista и вставка в указанную выше программу, скомпилированную и запускаемую из командной строки.

Появляются ли вопросительные знаки сразу после вставки? Есть ли у вас какие-либо другие обработки в текстовом поле? Что для вас делает вышеуказанная программа? Какой браузер вы используете?

person Jon Skeet    schedule 20.09.2009
comment
Я использую Richtextbox, а не элемент управления текстовым полем. И я просто попробовал еще раз с другим веб-сайтом, и он работает нормально. По-видимому, это зависит от набора символов html. Я посмотрю, смогу ли я сузить круг вопросов. - person xpda; 20.09.2009
comment
Хорошо, я начинаю задумываться о галлюцинаторных эффектах диетической колы. Я нашел исходный текст в Википедии (en.wikipedia.org/wiki/TCDD_5701_Class), вставлен снова, и теперь все работает нормально, без вопросительных знаков. Он также работает в обычном текстовом поле, хотя раньше я этого не пробовал. Для справки, я использую Firefox 3.5.3. Это произошло сразу после вставки, и никакой другой обработки в поле форматированного текста не было. Ничего не сбрасывалось с момента первоначального появления, даже браузер или vs. Может быть, я спишу это на странность браузера. - person xpda; 20.09.2009
comment
Отредактировал мой пример, чтобы он был более подходящим. Все еще не могу воспроизвести ... очень странно. - person Jon Skeet; 20.09.2009

Если у вас есть собственный метод вставки, обязательно вставьте его как DataFormats.UnicodeText, а не как DataFormats.Text; поскольку последний является только ANSI, который даст вам "?" символы в качестве замены символов Unicode.

person TodK    schedule 21.09.2009