Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Юникод юникоду рознь? И как с этим бороться? / 6 сообщений из 6, страница 1 из 1
14.04.2005, 12:48
    #33015605
Buba.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод юникоду рознь? И как с этим бороться?
Имеем ASP + MSSQL

Есть поле в базе nvarchar , куда юзер на сайте вбивает свои данные. При просмотре обнаружил, что иногда вместо нормальных русских фамилий лезут крякозаблики (напр., "Iineaa" вместо "Москва", "E?aiau" вместо Любовь).

Методом совершенно ненаучного тыка обнаружено, что если сменить кодовую страницу (вместо 1251 поставить 1252), то все нормально кажет.

Вопросы:
1. Ведь nvarchar - это юникод, исходный язык - один, исходная страница, на которой идет сохранение данных - тоже одна, так почему данные сохраняются по-разному?

2. Если нельзя избежать того, что по-разному все сохраняется, то как можно определять, в какой кодовой странице это на экран выводить? Я бы мог менять перед выводом каждого поля Session.CodePage, если уж так получается. Но как узнать, чего нужно ставить в эту переменную?
...
Рейтинг: 0 / 0
14.04.2005, 12:53
    #33015628
Dats
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод юникоду рознь? И как с этим бороться?
А если так
Session.CodePage = 1251
Response.CharSet = "windows-1251"
...
Рейтинг: 0 / 0
14.04.2005, 12:57
    #33015650
Buba.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод юникоду рознь? И как с этим бороться?
DatsА если так
Session.CodePage = 1251
Response.CharSet = "windows-1251"
Не-а, не лечится :(
...
Рейтинг: 0 / 0
14.04.2005, 12:58
    #33015654
Юникод юникоду рознь? И как с этим бороться?
В web.config добавьте следующие:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="ru-RU" uiCulture="ru-RU"/>
</system.web>
</configuration>

И переведите все свои странички на Unicode:
<%@ Page language="c#" Codebehind="..." AutoEventWireup="false" Inherits="..." codePage="65001"%>
.....
<html>
<head>
.....
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
.....
</head>
.....
...
Рейтинг: 0 / 0
14.04.2005, 13:20
    #33015730
Buba.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод юникоду рознь? И как с этим бороться?
Пардон, видимо, я не достаточно четко сформулировал - все это делается на "классическом" ASP, на VBScript
...
Рейтинг: 0 / 0
17.04.2005, 00:33
    #33019753
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод юникоду рознь? И как с этим бороться?
Buba.Имеем ASP + MSSQL

Есть поле в базе nvarchar , куда юзер на сайте вбивает свои данные. При просмотре обнаружил, что иногда вместо нормальных русских фамилий лезут крякозаблики (напр., "Iineaa" вместо "Москва", "E?aiau" вместо Любовь).

Методом совершенно ненаучного тыка обнаружено, что если сменить кодовую страницу (вместо 1251 поставить 1252), то все нормально кажет.

Вопросы:
1. Ведь nvarchar - это юникод, исходный язык - один, исходная страница, на которой идет сохранение данных - тоже одна, так почему данные сохраняются по-разному?

2. Если нельзя избежать того, что по-разному все сохраняется, то как можно определять, в какой кодовой странице это на экран выводить? Я бы мог менять перед выводом каждого поля Session.CodePage, если уж так получается. Но как узнать, чего нужно ставить в эту переменную?

Когда юзер "вбивает" на сайте свои данные - они юникодом ЕЩЕ не являеются. То есть преобразование из локализованой кодировки в юникод выполняет скрипт, которые обрабатывает данные формы. Ищи ошибку там.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Юникод юникоду рознь? И как с этим бороться? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]