Как серверный код ASP может испортить смарт-цитату? - PullRequest
2 голосов
/ 21 июня 2010

Моя компания только что преобразовала много столбцов из varchar в nvarchar.

Теперь кажется, что когда мы выводим на экран умную цитату (т.е. ALT + 0146 '), а затем отправляем ее обратно на SQL Server 2000база данных для сохранения, смарт-цитата повреждена до - *. 1003 *

Мой вопрос:

Как код на стороне сервера ASP может испортить смарт-цитату '?

РЕДАКТИРОВАТЬ: Похоже, мой вопрос похож на этот .Между прочим, контент Powerpoint ввел умную цитату в смесь.Однако, как я уже говорил, я имею дело со страницей ASP, тогда как упомянутый вопрос относится к странице PHP.

EDIT : серверная директива CODEPAGE=65001 делает страницу правильно отображает , но все равно публикует контента как «западноевропейский» на Windows 2000.Кто-нибудь знает почему?

Ответы [ 4 ]

2 голосов
/ 21 июня 2010

Взгляните на это:

http://support.microsoft.com/kb/232580

Возможно, вы захотите установить свою кодовую страницу в ASP, чтобы не получать хоккейные символы.

2 голосов
/ 21 июня 2010

Похоже, что-то делает неявное преобразование между ANSI и Unicode (и выбирает неправильную кодовую страницу в процессе). Возможно, вам придется выполнить преобразование вручную и указать правильную кодовую страницу. Трудно сказать, не видя код.

1 голос
/ 22 июня 2010

Хотя вам нужно сообщить серверу, какую кодировку использовать, вы сказали клиенту, что такое кодировка страницы?Если нет, клиент с удовольствием разместит в любой кодировке, которую пользователь явно выбрал последним, или системную кодировку по умолчанию, которая, скорее всего, будет западноевропейской на большинстве компьютеров в США или Западной Европе.есть что-то подобное в вашем ?

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Вы также можете попросить сервер явно отправить это в ваши Response.Headers.Хотя я думаю, что это хорошая идея, чтобы отправить его в заголовках HTTP, полезно включить его в HTML, а также для людей, которые решили сохранить документ локально по любой причине.

0 голосов
/ 24 июня 2010

VBScript может искажать символы Юникода;особенно в старых версиях IIS (то есть IIS 5.0 в Windows Server 2000).

В моем случае виновата конструкция For Each.

Вот пример кода, который выполняется после POST:

Response.Write Request.Form("selOptions")(0) ' A-OK! - Displays Unicode characters fine!  
For Each sOption in Request.Form("selOptions")
  Response.Write sOption ' Bad! Unicode characters are mangled!  
Next

Как всегда, ваш пробег может отличаться.

...