Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Unicode und ASP (Einführung)

Geschrieben von: Christian Koller
Kategorie: ASP Grundlagen

Unicode ist ein weltweiter Zeichensatz-Standard, der die gängigsten Buchstaben und Zeichen enthält, die weltweit in der Geschäftswelt Verwendung finden. Mit Hilfe von Systemen, die Unicode verarbeiten können, wird die Erstellung und Verwaltung von Software für verschiedenste Sprachen stark vereinfacht. Anstatt für jede Sprache einen eigenen Zeichensatz einsetzen zu müßen, erlaubt Unicode das Hantieren von mehrsprachigen Texten allein mit dem Unicode Zeichensatz.

Unicode weist jedem Zeichen eine 2 Byte lange Nummer zu (von 0 bis 65535), sodaß das Zeichen in der Computerwelt unabhängig von Plattform, Programm und Sprache verwendet werden kann.

Der Unicode Standard ist die Basis für weitere Standards wie XML, JavaScript oder WML. Die Entwicklung und Verbreitung des Unicode Standards wird vom Unicode-Konsortium betrieben.

Was hat nun Unnicode mit ASP zu tun, und wo wird Unicode heute schon auf breiter Basis in der Software-Entwicklung eingesetzt?

Active Server Pages (ASP) auf IIS 4.0 oder IIS 5.0 arbeitet intern mit Unicode um Zeichen zu speichern und zu verarbeiten. Viele weitere Microsoft Produkte arbeiten bereits vollständig mit Unicode, oder sind zumindest Unicode kompatibel:

  • Windows 2000
  • Office 2000 (mit Access 2000)
  • ASP
  • ADO
  • Index Server
  • SQL Server 7.0
  • Internet Explorer 5

Wo kommt nun der ASP-Entwickler mit Unicode in Berührung?

Je nach Einstellung des Webservers benutzt die ASP Engine eine bestimmte "Codepage". Diese Codepage legt fest, wie der Ascii-Code eines Zeichens zu interpretieren ist. Es gibt Codepages für Westeuropäische Sprachen, Griechisch, Kyrillisch, Chinesisch, Japanisch usw.

In jedem ASP Script werden Strings in Variablen gespeichert und zum Browser geschrieben. Jedesmal, wenn ASP ein Zeichen zu interpretieren hat, sei es nun, weil es in einer Variablen gespeichert wird, oder weil es mittels Response.Write zum Browser geschrieben wird, konvertiert ASP das Zeichen von Unicode zur eingestellten Codepage.

Die Codepage kann man unter ASP mittels der @Codepage Direktive oder mittels Session.Codepage einstellen.

Daß ASP intern Unicode zum Speichern von Strings verwendet wurde bereits erwähnt, daneben gibt es aber beim Schreiben von ASP-Seiten auch folgende Berührungspunkte mit Unicode-Einstellungen und -Parametern:

  • @CODEPAGE und Session.CodePage : Einstellungen zur Interpretation von Strings. ASP benutzt diese Einstellungen um die intern gespeicherten Unicode Strings in Ascii Zeichen gemäß der eingestellten Codepage auszugeben, oder um Zeichen zur internen Speicherung in Unicode umzuwandlen.
  • FileSystemObject Objekt: Beim Erstellen und Öffnen von Textdateien mittels FileSystemObject kann man zum Beispiel einstellen, ob man Textstreams als Unicode auslesen will, oder ob man eine Datei als Unicode (anstatt Ansi) auf der Festplatte speichern will.
  • ActiveX Data Objects (ADO) erlaubt Zugriff auf Strings die in Datenbanken gespeichert sind. Die Datenbank (Access 2000 oder SQL Server 7.0) kann dabei intern den String, je nach Tabellendefinition, als Ansi-Code oder als Unicode speichern. Mittels der Eigenschaften eines ADO Field Objektes kann man herausfinden, ob ein Datenbankfeld nun Unicode speichert oder nicht. Bei Datenbankafragen mittels SQL Kommando ist es in SQL Server 7.0 nötig, die String Werte als Unicode zu kennzeichnen um eine korrekte Verarbeitung der Kommandos zu gewährleisten. Das ADO Stream Objekt läßt sich konfigurieren um Unicode Daten zu verarbeiten. Weiters kann man unter ADOX Tabellen mit Unicode-Feldern erstellen.
  • Bei der Programmierung von Index Server Abfragen muß man darauf achten, daß man entweder Unicode Zeichen für die Abfrage benutzt, oder den richtigen Zeichensatz in der ASP Seite und dem Indexserver einstellt.
  • Beim Ausgeben von HTML Seiten in bestimmten Sprachen (oder in Unicode) gibt man mittels <META HTTP-EQUIV> Tag die gewählte Codepage (auch Unicode) an.
  • Beim Generieren und Schreiben von standardkonformen XML Daten aus ASP muß man das XML Dokument als Unicode-Dokument erstellen und zum Client schreiben.
  • Die VBScript Funktionen AscW und ChrW erlauben direkte Manipulation von Unicode-Zeichen.

All dies wird in nachfolgenden Artikeln dieser Artikelreihe Unicode und ASP ausführlich und detailliert erklärt werden. Probleme, Bugs und Fallen in der Programmierung werden erläutert und Lösungen zu Aufgabenstellungen präsentiert werden.

Zum Abschluß dieses Artikels möchte ich noch mit einem kleinen Beispiel demonstrieren, daß ASP intern Unicode benutzt, und die gespeicherten Daten mittels Codepage Einstellung interpretiert:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>Beispiel</title>
<!-- Griechischer Zeichensatz im Browser benutzen - ISO -->  
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-7">  
</head>

<body>
<%
' Speichern der Original Codepage
Session("OriginalCodePage") = Session.CodePage

' Griechische Codepage einstellen
Session.CodePage = 1253

Response.Write("Codepage = " & Session.Codepage)
Response.Write("<br>")

strA = Chr(&HC1) & _
  Chr(&HD3) & _
  Chr(&HD0)
  
Response.Write(strA & "<br>")

Response.Write("Asc Werte(Ansi): <br>")
For intI = 1 to Len(strA)
  Response.Write(Asc(Mid(strA,intI,1)) & " ")
Next
Response.Write("<br><br>")

Response.Write("AscW Werte (Unicode): <br>")
For intI = 1 to Len(strA)
  Response.Write(AscW(Mid(strA,intI,1)) & " ")
Next
Response.Write("<br><br><br>")

' Westeuropaeische Codepage: 
' Verschiebt Interpretation des Unicodes
Session.CodePage = 1252

Response.Write("Codepage = " & Session.Codepage)
Response.Write("<br>")

Response.Write(strA & "<br>")

Response.Write("Asc Werte(Ansi): <br>")
For intI = 1 to Len(strA)
  Response.Write(Asc(Mid(strA,intI,1)) & " ")
Next
Response.Write("<br><br>")

Response.Write("AscW Werte (Unicode): <br>")
For intI = 1 to Len(strA)
  Response.Write(AscW(Mid(strA,intI,1)) & " ")
Next
Response.Write("<br><br>")

Response.Write("Darstellung mittles HTML-Syntax &amp#xxx; :<br>")
For intI = 1 to Len(strA)
  Response.Write("&#" & AscW(Mid(strA,intI,1)) & ";")
Next

%>

</body>
</html>

<%
' Zuruecksetzen der Codepage Einstellungen
Session.CodePage =  Session("OriginalCodePage")
%>

Die Ausgabe des Scripts im Browser ist im folgenden Screenshot gezeigt:

Nun aber zur Analyse des Sourcecodes. Der META HTTP-EQUIV Code zeigt dem Browser an, den HTML Inhalt mit dem Griechischen Zeichensatz zu interpretieren:

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-7">  

Danach wird der Wert (Integer) der augenblicklichen Codepage aus Session.Codepage ausgelesen und in der Sessionvariablen Session("OriginalCodePage") gespeichert.

Die griechische Codepage hat den Wert 1253. Um die griechische Codepage für Ein- und Ausgaben des ASP-Skripts einzustellen, wird Session.Codepage der Wert 1253 zugewiesen.

Im String strA werden die griechischen Zeichen Alpha, Sigma, Pi als Unicode gespeichert. Dies erreicht man durch Verwendung der ChrW Funktion und der entsprechenden Unicodes für die einzelnen Zeichen.

Danach wird der String strA zum Browser geschrieben und dort als griechische Schrift angezeigt (vorausgesetzt, der Browser stellt die griechischen Buchstaben zur Verfügung).

Die nachfolgenden Schleifen schreiben die ANSI Werte (entsprechend der eingestellten Codepage) und die Unicode Werte des Strings strA zum Browser.

Nun stellt das Skript die Codepage 1252 ein, die alle Zeichen der westeuropäischen Sprachen beinhaltet. Als nun strA zum Browser geschickt wird, kann ASP die als Unicode gespeicherten Zeichen nicht richtig als Zeichen der eingestellten Codepage interpretieren (weil griechische Zeichen nicht in der westeuropäischen Codepage vorgesehen sind). Das Skript hat versucht, die Zeichen in strA von Unicode in die Ansi-Werte zu übersetzen, wie die geänderten Asc Werte anzeigen. Intern speichert ASP den String aber immer noch als den gleichen Unicode, wie die unveränderten Unicode-Werte anzeigen, die die AscW Funktion ausgibt.

Zum Schluß schreibt das Skript noch die einzelnen Zeichen des Strings in der HTML-kodierten Form &#xxx; zum Browser. Dadurch kann man sozusagen sowohl die eingestellte Codepage des ASP-Skripts als auch die verwendete Codepage des Browsers umgehen!

Schlußbemerkung

Unicode wird immer wichtiger, wie seine wachsende Verbreitung in professioneller Software bereits zeigt. In ASP-Seiten gibt es einige Berührungspunkte mit Unicode und der jeweiligen Interpretation gemäß der eingestellten Codepage des Webservers bzw. des Browsers.

Beim Zugriff von ASP auf andere Datenquellen (wie Dateien, Datenbanken, XML oder Streams) ist es unbedingt nötig, auch mit Unicode-codierten Daten umgehen zu können.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

Fernöstliche Formulare / Unicode die Zweite
Zahl, Datum und Währung korrekt formatiert ausgeben

Links zu anderen Sites

Unicode.org

Wenn Sie jetzt Fragen haben...

Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten.

Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.

 

Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.