Как вы получаете доступ к SQL и отображаете китайские символы в ASP.NET? - PullRequest
0 голосов
/ 29 марта 2011

У меня есть база данных, в которой хранятся китайские иероглифы. Это отлично работает. Код для этой системы написан на VBScript ASP. Вот образец http://www.arrb.com.au/test.asp

enter image description here

Я также обращаюсь к этой базе данных через ASP.NET, но символы не отображаются на китайском языке.

Смотри здесь http://www.arrb.com.au/Test-Page.aspx

enter image description here

Почему ASP работает, а ASP.NET не работает?

Код для доступа к китайскому языку в ASP.NET похож на:

query = "select * from myTable ....";

SqlDataAdapter da = new SqlDataAdapter(query, Yart.SQLServerConnections.SqlConnection);
DataSet ds = new DataSet();
da.Fill(ds, "paragraphs");

Response.Write((string)ds.Tables["paragraphs"].Rows[0]["chinese"]);

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

Обратите внимание, что на обеих страницах-образцах у меня есть этот тег:

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

Ответы [ 3 ]

1 голос
/ 29 марта 2011

Какая кодировка использовалась при сохранении данных в базе данных? Попробуйте преобразовать вашу строку для использования той же кодировки, прежде чем делать Response.Write.

Список доступных кодировок здесь ... http://msdn.microsoft.com/en-us/library/system.text.encoding(v=VS.100).aspx

Вот метод, используемый для преобразования в правильный тип http://msdn.microsoft.com/en-us/library/kdcak6ye.aspx

1 голос
/ 29 марта 2011

Ответы выше помогли, вот как это сделать ...

В сети много статей об этом:

http://csharpindepth.com/Articles/General/Strings.aspx

http://www.joelonsoftware.com/articles/Unicode.html

Но достаточно сказать это. Когда вы сохраняете символы из обратной передачи формы, символы будут кодироваться . Если вы не укажете кодировку, она будет определена для вас.

Это может быть очень запутанным!

Китайские иероглифы могут выглядеть хорошо в ASP, но не в ASP.NET

Так что, чтобы остановить проблемы, всегда объявляйте свои кодировки! Обычно мы используем utf-8.

В ASP сделайте это:

<% @CodePage = 65001 %>
<%Option Explicit%>

<%
Session.CodePage = 65001 
Response.CodePage = 65001
Response.CharSet = "utf-8" 
%>

При прямом сохранении SQL убедитесь, что символы сохраняются в nvarchar, ntext и т. Д. Убедитесь, что оператор SQL имеет символ N

update [someTable] set [col]=N'...'

Также объявите кодировку в HTML:

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

В ASP.NET добавьте это в web.config:

<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"
fileEncoding="utf-8"/>
0 голосов
/ 29 марта 2011

Может быть, этот класс может вам помочь:

System.Text.UTF8Encoding

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...