#asp.net
#asp.net
Вопрос:
У меня есть страница aspx, которая использует веб-сервис Siebel и получает символы кандзи от Siebel по запросу. Это отображается в виде серии вопросительных знаков в текстовом поле aspx. Это не может быть ошибкой данных из серверной части, поскольку другие приложения получают правильные символы кандзи от Siebel. Кроме того, я установил восточноазиатские языки с панели управления и добавил язык [ja-Jp] на вкладке Языки Internet Explorer 7. кроме того, я добавил запрос глобализации = «Shift-JIS», responseEncoding =»Shift-JIS» в свой web.config, а также попытался изменить ‘Shift-JIS’ на ‘utf-8’ в приведенной выше строке, но без разницы. Я также сохранил свою страницу aspx и ее кодовые страницы в кодировке Unicode (utf-8 с подписью), но не обнаружил изменений в символах, отображаемых в текстовом поле.
Пожалуйста, помогите.
Ответ №1:
На стороне сервера все, что вам нужно сделать, это убедиться, что вы получаете строку .NET из веб-службы с правильными данными, и назначить строку текстовому полю.
Очевидно, что это проблема на стороне клиента — наиболее вероятная причина в том, что вы выбрали неправильный шрифт для своей веб-страницы / текстового поля (либо через ваш CSS, либо в настройках браузера). Если шрифт не поддерживает символ Юникода, то он будет отображаться?. Поэтому попробуйте изменить шрифт.
Комментарии:
1. Спасибо за ваш ответ, Виней. Я выбрал ‘Arial Unicode MS’ в качестве шрифта веб-страницы и ‘MS Gothic’ в качестве обычного текстового шрифта в диалоговом окне «Шрифты» Internet Explorer. Кроме того, мой класс css имеет Arial Unicode MS. Но я по-прежнему вижу только вопросительные знаки в текстовом поле.
2. @Jay, если вы используете view-source для своей страницы, какое значение вы видите в своем текстовом поле. Кроме того, используйте utf-8 в качестве requestEncoding amp; responeEncoding.
3. Спасибо, что уделили мне время, Виней. В исходном коде страницы были символы кандзи, а не вопросительные знаки. Наконец-то я нашел решение этой проблемы (но не причину). Виновником был вызов метода javascript «window.showModalDialog()», и текстовые поля, отображающие вопросительные знаки, находились в этом модальном окне. Как только я изменил это на window.open (), символы кандзи правильно отображались в текстовых полях. Странно! Теперь это работает даже без добавления тега ‘globalization’ в web.config.
4. @Jay, это действительно странно! Кстати, вам не нужен никакой тег глобализации, потому что кодировки по умолчанию (utf-8) должно быть достаточно для представления любых символов Юникода (мало того, что utf-8 широко поддерживается в браузерах, наборах инструментов, фреймворках и т.д.).
Ответ №2:
window.open() отобразил символы кандзи, которые ранее отображались в виде набора вопросительных знаков. Однако я столкнулся с другой серьезной проблемой, поскольку window.open () является асинхронным. В window.showModalDialog выполнение было синхронным и, следовательно, любая инструкция после window.showModalDialog () будет ждать, пока пользователь не закроет диалоговое окно. Итак, задача, с которой я столкнулся сейчас, была еще более сложной, поскольку мне пришлось ввести синхронное поведение в window.open (), что усложнило ситуацию.
Наконец-то я нашел решение обеих проблем. Я использовал метод Javascript escape(). Теперь вместо вопросительных знаков отображаются символы кандзи и, что более важно, это работает с window.showModalDialog().
Синтаксис: escape()