Globalisering problemen in ASP en ASP.NET


Ondersteuning voor ASP.NET-stem kolom


Deze kolom aan uw behoeften aanpassen, nodigen we u uit om te dienen uw ideeën over onderwerpen die u interesseren en problemen die u wilt zien in toekomstige gericht Knowledge Base-artikelen en ondersteuning voor spraak-kolommen. U kunt uw ideeën en feedback via het formulier Vragen voor het indienen. Er is ook een koppeling naar het formulier onderaan in deze kolom.

Inleiding


Welkom! Dit is Sukesh Khare met de ondersteuning voor ontwikkelaars van Microsoft ASP.NET-team. Dit is de eerste keer dat ik een kolom ondersteuning stem hebt geschreven. Ik wil graag meer van dergelijke kolommen ontwerpen in de komende maanden.

Voor de kolom van de maand ga ik bespreken de globalisering in Active Server Pages (ASP) en ASP.NET, de problemen waarmee we geconfronteerd in ASP, hoe zaken veranderd in ASP.NET 1 x, en hoe zit het met ASP.NET 2.0 op de voorzijde van de globalisering.

Opmerking Als u een term die u niet begrijpt tegenkomt, Zie de sectie woordenlijst onderaan in deze kolom.

Globalisering problemen in ASP

Voordat in ASP.NET was er geen gestructureerde ondersteuning voor de ontwikkeling van toepassingen voor algemene gebruikers. Tijdens de vroege ontwikkeling van ASP, ontwikkelaars, zoals mezelf gevonden alleen verspreid over ondersteuning voor globalisering in besturingssystemen, browsers, ASP's en back-end systemen. Echter waargenomen we zelden een automatische verbinding via deze toepassingen. Gelukkig wij begrijpen concepten zoals tekensets, codetabellen browser talen en lettertypen die we voor de ontwikkeling van toepassingen voor globale gebruikers mogelijk kan maken.

Het zou te moeilijk zijn te verdelen in categorieën die de mondialisering alle problemen die van ons in ASP.NET hebt gezien. In plaats daarvan zult ik een overzicht van een aantal begrippen die betrekking op tal van deze problemen hebben.

Teken sets en codetabellen

We weten dat de tekens op het scherm een serie bytes zijn. De byte-reeksen worden gemaakt en in een aantal manieren worden geïnterpreteerd. Als de interpretatie een codering die anders is dan dat de byte-array is gemaakt met codering wordt gebruikt, wordt de interpretatie als garbage weergegeven. Tekensets (de tekensets) zijn coderingsindelingen die gewoonlijk worden gebruikt door browsers. De eigenschap Codepage , die beter geschikt voor server-side conversies is, wordt een conversietabel bepaalt hoe tekens worden gecodeerd.

Browsers codeert de gegevens volgens de huidige tekenset boeken. Als de huidige tekenset 'windows-1256', wordt de indiening van de bytes naar de server is ook gecodeerd als "windows-1256."

Wanneer de ASP wordt beschouwd, worden de vorm en Querystring -collectie niet opgebouwd totdat er naar wordt verwezen in de code. Wanneer ze worden gebouwd, wordt het gegevenstype string volgens de huidige codetabel naar Unicode getransformeerd. (Standaard ASP- en ASP.NET verwerken van inhoud met behulp van de Unicode-indeling). Het is heel belangrijk dat de juiste codetabel in te stellen voordat u ernaar verwijst de collecties; anders wordt zijn de Unicode-weergave in het geheugen niet juist.

U stelt een codepagina met Session.Codepage of Response.Codepage. De Response.Codepage is alleen beschikbaar in versies van Microsoft Internet Information Services (IIS) 5.1 of hoger. Voor meer informatie over de gehele getallen (die overeenkomt met de tekenset) dat we zou deze eigenschappen instellen, gaat u naar de volgende Microsoft-website:Bijvoorbeeld, als u wilt dat de codetabel voor de Arabische taal, de volgende code gebruiken:
Session.Codepage = 1256
Response.Codepage zijn alleen van invloed op de huidige reactie. Session.Codepage heeft echter gevolgen voor alle antwoorden die door de huidige gebruiker. Wanneer u de codepagina ingesteld met een van deze eigenschappen en de vorm en Querystring -collectie worden gebouwd, wordt deze wijziging in de huidige codetabel de methode Response.Write om te zetten van de Unicode in het geheugen naar de huidige codetabel. Voor meer informatie over dit onderwerp gaat u naar de volgende MSDN-website:
De codetabel voor de tekenreeks voor het instellen van conversies (ASP)-http://msdn2.microsoft.com/en-us/library/ms525789.aspx
De beste als het gaat om de problemen met betrekking tot specifieke tekensets en codetabellen die client charset en codepagina van de server moet overeenkomen met.

Accepteren van talen

Als een ASP-ontwikkelaar wil weten welke talen die een gebruiker in zijn browser heeft ingesteld, kan de ontwikkelaar de variabele Request.ServerVariables op. (' HTTP_ACCEPT_LANGUAGE') gebruiken om te zoeken naar de lijst met talen die de gebruiker wil lezen van de reactie, (zoals Engels, Duits of Indische) en de volgorde van voorkeur die de gebruiker zou willen zien deze talen in. In ASP.NET is soortgelijke informatie aanwezig in de eigenschap Request.UserLanguages als een matrix.
Voor meer informatie over het gebruik van deze gegevens in ASP-code, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base:
229690 het ASP-landinstelling-ID per taal-instellingen van de browser instellen

Weergave van multibyte ingesteld in Internet Explorer

De coderingsindeling voor alleen die een multibyte-tekenset aantonen kan is Unicode (UTF-8). Met UTF-8, we Cyrillisch, Indiase en Japanse kunt weergeven op dezelfde pagina. Als we geen UTF-8, kunnen we een van deze talen alleen tegelijk weergeven. Gebruik de eigenschap Response.CharSet stelt de tekenset van de browser.

Statische multibyte-tekens op een pagina

Als u wilt weergeven als u multibyte-tekens rechtstreeks opgeslagen in de pagina, moeten we de pagina eerst opslaan met specifieke codering. UTF-8 worden aanbevolen, maar een bepaalde codetabel (vergeleken met de codetabel de tekens) werken ook.

Opslaan van een ASP-bestand met behulp van Microsoft Visual InterDev helpen niet, omdat Visual InterDev kunnen alleen worden opgeslagen in de Engelse ANSI of Unicode. Een ASP-pagina opgeslagen als Unicode niet door ASP wordt ondersteund.

U kunt een bestand in elke codering opslaan in Microsoft Visual Studio .NET. Er zijn twee manieren om dit te doen. De standaardwaarde is het bestand wilt opslaan met behulp van de huidige codetabel voor de gebruiker. Een aanvullende manier om een bestand opslaat met een codering is als volgt:
Klik in het menu bestand op OpslaanAls. In het
Het dialoogvenster Bestand OpslaanAls het vak, klikt u op de pijl omlaag op de
De knop Opslaan . Als u op de pijl klikt, zijn de opties
Opslaan en opslaan met codering. Wanneer u klikt op
Opslaan met codering, in het dialoogvenster Geavanceerde opties voor opslaan wordt weergegeven waarin u het type codering dat u wilt toepassen uit een lijst met de codepagina's die zijn geïnstalleerd op de computer kunt selecteren.


Opmerking Hiermee wijzigt u de codering voor het opslaan in werking, maar het is voor slechts één keer. De volgende opslaan wordt weer ingesteld op de standaardwaarde.

De standaardcodetabel, klikt u op Geavanceerde opties voor opslaan op de
Het menu bestand . U kunt instellen de standaardcodering voor het opslaan van bewerkingen op de codepagina van uw keuze in het dialoogvenster Geavanceerde opties voor opslaan .

Deze methoden hebben betrekking op hoe het bestand wordt opgeslagen op schijf. Voor de uitvoer van ASP, zoals reeds besproken, moeten we echter de Session.CodePage en de eigenschappen van Response.CharSet instellen. We kunnen ook de eigenschap Response.CodePage gebruiken in IIS 5.1 en latere versies.

Standaard CODETABEL op server

De standaardlandinstelling en de standaardcodetabel van de pagina afhankelijk van de registerinstellingen voor de. Standaardgebruiker. We kunnen de internationale sleutel op de registercomponent HKEY_USERS\ vinden. DEFAULT\Control Panel\International. We kunnen ook de werking van de landinstelling die door IIS wordt gekozen wijzigen. Zie de sectie 'IIS 5.0' in het volgende Knowledge Base-artikel voor meer informatie:
306044 gedrag van datum-en tijdnotatie verschilt wanneer deze vanuit Active Server Pages

Als de aangemelde gebruiker dezelfde landinstelling ingesteld als de bovenstaande sleutel of de standaardwaarde heeft, wordt de gebruikersinstelling van de voorrang.

Voorbeeld: De standaardlandinstellingen heeft datum opmaak ingesteld als 11.1.2004, terwijl de gebruiker is aangemeld (met dezelfde set landinstellingen) de datumnotatie als 1-11-2004 heeft. De 1-11-2004-instelling wordt van kracht voor ASP.

(Voor ASP.NET, dit kan variëren. Bij sommige installaties van de ASPNET gebruiker zijn eigen profiel dat wordt weergegeven in HKEY_USERS wanneer deze worden geladen. In andere gevallen wordt gebruikt de. Het standaardprofiel. We gebruiken kan ook het kenmerk codepage in de aangifte < % @ % >. Dit moet worden gebruikt wanneer het bestand wordt opgeslagen met een andere codering vervolgens de standaardwaarde, zoals codepagina 932 (Japans)).

Codepage problemen versus conversieproblemen lettertype: welke is dat?

Soms wordt er een vraagteken (?) of een vak waarin u een teken moet worden weergegeven.
Codepage conversieproblemen
Wanneer een teken wordt vervangen door een vraagteken (?), is dit een indicatie dat een codepage conversie-probleem is opgetreden. Het vraagteken (?) is een standaard-teken voor de conversie van de codepagina en in feite betekent dat het besturingssysteem niet weet hoe de tekenwaarde verwerken en converteren. De waarde wordt vervangen door een vraagteken (?). Dit kan betekenen dat het teken een ongeldige waarde voor de codepagina heeft of de codepagina die nodig is voor de conversie is niet geïnstalleerd.
Conversieproblemen lettertype
Wanneer een teken wordt vervangen door een vak, is dit een indicatie dat een lettertype conversie probleem is opgetreden. Dit gebeurt op de client wanneer de client beschikt niet over het juiste lettertype geïnstalleerd om juist dit teken weer te geven. Wanneer een teken afkomstig uit de Japanse tekenset is en de client geen van de Japanse lettertypen zijn geïnstalleerd, wordt bijvoorbeeld Japanse tekens weergegeven als een vak.

Vervolgens wil ik het hebben over hoe dingen gewijzigd ASP.NET 1.x en hoe deze wijzigingen van invloed zijn op globalisatie kwesties in de context van ASP.NET.

Problemen met globalisering in ASP.NET 1.x:

Met ASP.NET, zijn drie grote dingen die geïntroduceerd:
  • De code < globalisering > in het bestand web.config
    De code < globalisering > ons zich van de niet-samenhangende concepten van codetabellen en tekensets en kunnen we bepalen de meeste van de ASP.NET-varianten.
  • De naamruimte System.Globalization
    De naamruimte globalisering biedt ons de programmatische kracht van globalisering te verwerken.
  • Het concept van bronbestanden zijn aanzienlijk verbeterd.
    Hebben we niet te maken met de bronbestanden in de manier waarop we in ASP gebruikt voor. De bronbestanden zijn nu, in de vorm van XML-bestanden wanneer wij ontwerpen en ontwikkelen ze en ze bestaan als assembleert tijdens runtime.
De configuratiecode globalisering:

Er zijn twee belangrijke instellingen in de code:
<globalization             requestEncoding="utf-8" 
responseEncoding="utf-8" />
Volgt op andere gebieden van de mogelijke instellingen:
fileEncodingHiermee geeft u de standaardcodering voor .aspx, .asmx en .asax-bestanden opgegeven. Unicode en UTF-8-bestanden die zijn opgeslagen met het voorvoegsel byte order mark (met handtekening) worden, automatisch herkend, ongeacht de waarde van fileEncoding.
CultuurHiermee geeft u de standaardcultuur op voor de verwerking van binnenkomende webverzoeken (van toepassing op de methoden van klassen van de naamruimte System.Globalization).
uiCultureHiermee geeft u de standaardcultuur op voor het verwerken van zoekopdrachten bron afhankelijk van de landinstelling (satelliet-assembly's).
Ga naar de volgende Microsoft-website voor meer informatie over cultuur tekenreeksen (waarden van de cultuur en de uiculture):Deze instellingen worden toegepast door ASP.NET als het antwoord is voltooid en voordat de aanvraag wordt doorgegeven aan de toepassing. Voor responseEncoding, is de buffer die is gemaakt voor het opslaan van de uitvoer naar deze codering instellen. Alles in deze buffer wordt gecodeerd volgens de instelling zoals deze in de buffer wordt ingevoegd.

Voor requestEncoding, de runtime leest de aanvraag en geïnterpreteerd volgens de instelling in deze sectie. Dit is een instelling die kan echter voor problemen zorgen. In de onderstaande tabel ziet u de indeling van de bits van een geldige UTF-8-byte volgorde.

Als de waarde in de standaard-ASCII-7 bits valt, wordt de bytewaarde niet gewijzigd. Als de waarde hoger dan 127 is, moet deze voldoen aan de onderstaande regels. De eerste set van bits geeft aan hoeveel tekens in de reeks. Elke byte na de eerste met de eerste bit beginnen moet ingesteld op 1.

De indeling UTF-8-byte:
Bytesbitsweergave
170vvvvvvv
211110vvvvv 10vvvvvv
3161110vvvv 10vvvvvv 10vvvvvv
42111110vvv 10vvvvvv 10vvvvvv 10vvvvvv
Dit is waar het probleem komt. Als de browser worden gecodeerd met het verzoek op basis van een enkele byte-codering (bijvoorbeeld iso-8859-1), de waarden boven 127 worden niet geldig volgens de bovenstaande indeling. Wanneer ze worden gelezen in de buffer UTF-8, worden de ongeldige tekens gewoon weggehaald uit de uitvoer.

Runtime-codering wijzigingen

We kunnen de waarde van requestEncoding wijzigen en deze van kracht voordat de aanvraag wordt verwerkt in de gebeurtenis Application_BeginRequest . De gebeurtenis Page_PreRender is voor het antwoord, de laatste kans voor het wijzigen van de codering van de uitvoer. Ook opmerking dat Response.Write tekens in deze buffer wordt gebracht zodra wij bellen, worden de juiste codering instellen voordat u Response.Writehebben.

Oorspronkelijke gegevens wordt niet Unicode: Internet Explorer interpreteert enkel-byte-tekensets nog maken?

Ook kunnen we ASP.NET zich gedragen als ASP als we moeten. Als u wilt dit voorkomen, moeten we de requestEncoding en responseEncoding ingesteld op windows-1252 (een vollediger codering dan iso-8859-1) en de eigenschap Response.Charset gebruiken om de tekst correct weer te geven. Dit werkt omdat de windows-1252 is een enkel-byte standaardcoderingsschema dat en de bytes die worden toegevoegd aan de buffer niet gewijzigd. Dus worden dubbel-byte tekens verzonden als een reeks bytes met één. We kunnen Internet Explorer vervolgens bepalen hoe de bytes interpreteert met behulp van de eigenschap Response.Charset . In dit scenario kan het nodig zijn als de oorspronkelijke gegevens niet zijn opgeslagen als Unicode- of UTF-8, zoals een retourwaarde van een COM-object, of als de gegevens zijn opgeslagen in Microsoft SQL Server in een veld niet N (bijvoorbeeld varchar).

Problemen met SQL Server en ASP.NET globalisering

Invoer voor SQL Server Unicode
De beste manier voor het opslaan van gegevens in SQL Server is Unicode gebruiken. Wanneer we invoegen, bijwerken, enz., als er nog een minimale kans op Unicode-gegevens, moet vóór de waarde N toevoegen. Zo weet de database de waarde is Unicode. Een goed voorbeeld hiervan is de ADO-objecten. Zij doen dit automatisch als we het Recordset -object gebruiken om nieuwe records toevoegen.

Hier volgt een voorbeeld:
INSERT INTO MusicAlbum (Album_ID, [Year], Name, Artist_ID, Company_ID) VALUES (12345, 2005, N'Abida', 4653, 403)Or:
Dim t As String = "INSERT INTO MusicAlbum(Album_ID, [Year], Name, Artist_ID, Company_ID) VALUES (12345, 2005, N'" & TextBox1.Text & "', 4653, 403)"

Datum en tijd als invoer gebruikt voor SQL Server
Meestal hebben wij de kennis over de cultuur en de landinstelling van de datum of tijd wordt geïnterpreteerd in de ASP.NET-toepassing. Bij duwen en trekken van het gegevenstype datum/tijd aan en uit externe bronnen, uitgevoerd we echter het risico van misinterpreting, de datum/tijd-notaties. Dit komt omdat we niet altijd garanderen de cultuur en de landinstelling van de externe gegevensbron op dezelfde manier als in de toepassing. In SQL Server kan dit worden opgelost met behulp van ' taal' kenmerk in de connectionstring van de verbinding met de SQL-database tot stand wordt gebracht. De cultuur in onze toepassing is, kunnen wij dezelfde taalinstelling in de connectionstring aanbieden. Dit beschermt ons tegen het risico van een verkeerde interpretatie, omdat SQL Server altijd accepteert en verzendt u het gegevenstype datum/tijd in instemming met de hierboven vermelde instelling.

System.Globalization-naamruimte

Deze naamruimte is de kern van de globalisering en lokalisatie in het .NET Framework. De hoofdklasse in deze naamruimte gebruikt, is de CultureInfo -klasse. Cultuur-specifieke informatie, zoals de datum en tijd, getalnotaties, vergelijkende informatie en tekstinformatie bevat. Ga naar de volgende MSDN-website voor meer informatie over de klasse van de CultureInfo-variabele :

Neutrale culturen versus specifieke culturen

Een neutrale cultuur is een cultuur die is gekoppeld aan een taal, maar niet een bepaald land of regio. Een specifieke cultuur is gekoppeld met een taal en een bepaald land.

Een voorbeeld: 'Nl' (neutrale cultuur) is voor de Duitse taal, maar 'de-AT' (specifieke cultuur) voor de Duitse taal als het wordt uitgesproken in Oostenrijk. Neutrale culturen kunnen niet worden gebruikt voor de opmaak.

Huidige thread en cultuur bewust te maken van .NET Framework-klassen

Alle klassen en methoden in de .NET Framework-bibliotheek waar we de uitvoer zijn afhankelijk van de cultuur zou verwachten heeft twee ingebouwde gedrag:
  • Ze laat ons de cultuurcode opgeven bij het opgeven van de argumenten, zodat de uitvoer is gebaseerd op de opgegeven cultuur. Dit is optioneel.
  • Als u dit hebt gemist (meestal is), de klassen zijn intelligent genoeg om een controle van de eigenschap Thread.CurrentThread.CurrentCulture en volgens die.
We kunnen de waarde van deze eigenschap met code die er ongeveer als volgt wijzigen:
    Dim ci As CultureInfo        ci = New CultureInfo("de-AT")
Thread.CurrentThread.CurrentCulture = ci
In dit codevoorbeeld 'nl' staat voor de Duitse taal en 'AT' staat voor Oostenrijk. Dus in dit geval is de DateTime.Now(). ToString methode zou retourneren de datum en tijd in een indeling die de manier waarop de datum en tijd worden uitgedrukt in de Duitse taal in Oostenrijk.

Het framework (als volgt) zorgt ervoor dat de eigenschap CurrentCulture altijd worden geïnitialiseerd:
  1. Wat deze is ingesteld op via programmacode.
  2. In het geval deze niet expliciet is ingesteld door de programmeur, de eigenschap van de configuratiebestanden is verzameld (< globalisering >-code).
  3. Als de eigenschap niet weergegeven wordt, is de cultuur waarop de webserver wordt uitgevoerd. Dit is meestal de neutrale cultuur die overeenkomt met de taal van het besturingssysteem.

Bronbestanden

Alle .resx, .resource bestanden en bestanden met het kenmerk Build Action is ingesteld op Ingesloten bron die worden toegevoegd aan een ASP.NET-project in Visual Studio .NET worden automatisch gecompileerd en ingesloten in een toepassing als onderdeel van het manifest. Dit kan ook handmatig doen met behulp van het hulpprogramma Resource bestand Generator (RESGEN) via een opdrachtprompt van Visual Studio .NET. Ga naar de volgende MSDN-website voor meer informatie:Dit is een algemeen concept, dat van toepassing is wanneer we nodig hebben voor het beheren van bronnen die niet gerelateerd aan de globalisering zijn. Wanneer we de globalisering implementeert, moeten we satelliet-assembly's gebruiken.

Satelliet-assembly 's

Satelliet-assembly's kunnen worden gebruikt in een ASP.NET-project wanneer u ervoor zorgen dat de volgende voorwaarden wordt voldaan:
  1. De gebruikersinterface-elementen in alle ASPX-bestanden moeten zijn uitgerust met id en runat = Serverkenmerken.
  2. We maken .resx afzonderlijke bestanden. Elk moet overeenkomen met elke cultuur we onze toepassing willen te ondersteunen.
  3. We moet een gemeenschappelijke voornaam voor deze bestanden voor bijvoorbeeld 'Reeksen' beslissen.
  4. Wij de afzonderlijke .resx bestanden met de volgende naming convention commonfirstname. taalcode regiocode.resx naam (bijvoorbeeld: Strings.de-AT.resx, Strings.en-GB.resx).
  5. Hebben we het bronbestand
    commonfirstname(Strings.resx) .resx die heeft alle de tekenreeksen als we willen dat in het geval van standaard weergegeven.
  6. Code schrijven om te detecteren cultuur van de gebruiker en stel de eigenschap Thread.CurrentThread.CurrentUICulture om te stemmen.
  7. Code voor het laden van de bronnen met behulp van de klasse ResourceManager schrijven.
  8. Code schrijven voor tekenreeksen ophalen uit het geladen object en wijst deze toe aan elementen van de gebruikersinterface.
Wanneer u deze stappen hebt uitgevoerd, Visual Studio.NET Strings.resx compileert en insluiten in de toepassing assembly (MyGlobalizationTestProjectName.dll). Echter voor alle andere bestanden .resx wordt gegenereerd afzonderlijk dll-bestanden waarvoor geen uitvoerbare code, maar alleen de resourcegegevens. Deze worden satelliet-assembly's daadwerkelijk genoemd. Ook Visual Studio .NET wordt geplaatst in de mapstructuur met de volgende strekking:
MyGlobalizationTestProjectName        |------- bin
|------en-US
MyGlobalizationTestProjectName.resources.dll
|------ja-JP
MyGlobalizationTestProjectName.resources.dll
|------de-AT
MyGlobalizationTestProjectName.resources.dll

Verschil tussen CurrentCulture en CurrentUICulture

De ResourceManager klasse die de resource assembly geladen terwijl de eigenschap Thread.CurrentThread.CurrentCulture voor de uitvoer is afhankelijk van de methoden van klassen in de naamruimte System.Globalization , is afhankelijk van de eigenschap Thread.CurrentThread.CurrentUICulture op de juiste satelliet-assembly geladen. Hier volgt een voorbeeld van de C#-code:
using System.Globalization;using System.Threading;
using System.Resources;

//Load resources.
protected ResourceManager gStrings = new ResourceManager("MyGlobalizationTestProjectName.strings", typeof(MyTestWebFormName).Assembly);

// Get the user's preferred language.
string sLang = Request.UserLanguages[0];
// Set the thread's culture for formatting, comparisons, etc.
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(sLang);
// Set the thread's UICulture to load resources
// from satellite assembly.
Thread.CurrentThread.CurrentUICulture = new CultureInfo(sLang);

private void Page_Load(object sender, System.EventArgs e)

{

if (!IsPostBack)

{
// Get strings from resource file and assign to UI elements.
head1.InnerHtml = gStrings.GetString("satellite.head1");
p1.InnerHtml = gStrings.GetString("satellite.p1");
sp1.InnerHtml = gStrings.GetString("satellite.sp1");
sp2.InnerHtml = gStrings.GetString("satellite.sp2");
butOK.Text = gStrings.GetString("satellite.butOK");
butCancel.Value = gStrings.GetString("satellite.butCancel");
}

}

De volgorde waarin ASP.NET satelliet-assembly's selecteert:

Wanneer u van de thread CurrentUICulturehebt ingesteld, ASP.NET de bronnen die overeenkomen, automatisch geselecteerd in de volgende volgorde:
  • Als een satelliet-assembly wordt gevonden met een overeenkomende cultuur, worden de bronnen in die assembly gebruikt.
  • Als een satelliet-assembly wordt gevonden met een neutrale cultuur die overeenkomt met de CurrentUICulture, worden bronnen in die assembly gebruikt.
  • Als een overeenkomst wordt gevonden voor de CurrentUICulture, worden de terugvalbronnen opgeslagen in de uitvoerbare assembly gebruikt.
Opmerking Dit is gebaseerd op de algemene Resource terugval proces. Ga naar de volgende MSDN-website voor meer informatie:

Satelliet-assembly's handmatig te maken:

Dit gebruik van satelliet-assembly's is waar Visual Studio .NET maakt u de assembly's zelf. Visual Studio .NET wordt sterke naam satelliet-assembly's echter niet standaard. Als u wilt dat deze opties wilt wijzigen, moet u het handmatig maken van satelliet-assembly's. Ga naar de volgende MSDN-website voor meer informatie:.

Hoe zit het met ASP.NET 2.0 op de voorzijde van de globalisering?

Het wijdverbreide gebruik van ASP.NET en de soorten problemen die we met betrekking tot globalisatie functies van ASP.NET 2.0 zien nog steeds enige afstand vooruit. Het zou echter zijn goede korte bekijken in welke richting de methodologie van de globalisering het hoofd voor webtoepassingen.

Globalisatie-ondersteuning in ASP.NET 2.0 een radicale verandering heeft ondergaan en Web-ontwikkelaars de mogelijkheid om de lokalisatie van toepassingen zo eenvoudig als het is voor Windows-toepassingen hebben gekregen. Hieronder volgt een lijst met functies die de basis van de methodologie van de globalisering in ASP.NET 2.0:

Sterk getypeerde bronnen De kern van het .NET Framework 2.0 release is voor sterk getypeerde bronnen die ontwikkelaars met Intellisense-ondersteuning en vereenvoudigt de code is vereist voor toegang tot bronnen in runtime.

Beheerde Resource Editor Visual Studio .NET 2.0 bevat een nieuwe resource editor met betere ondersteuning voor het maken en beheren, met inbegrip van tekenreeksen, afbeeldingen, externe bestanden en andere complexe typen resourceposten.

Het genereren van bronnen voor webformulieren Windows Forms-ontwikkelaars de voordelen van automatische internationalisering al goed bevallen. Visual Studio .NET 2005 ondersteunen nu snelle internationalisering door het automatisch genereren van de bronnen voor webformulieren, besturingselementen en basispagina's.

Runtime-ondersteuning verbeterd ResourceManager exemplaren worden beheerd door de runtime en gemakkelijk toegankelijk is voor servercode via API's beter toegankelijk.

Expressies voor lokalisatie Moderne declaratieve expressies voor webpagina's ondersteuning voor resource toewijzingen voor eigenschappen, eigenschappen van HTML of statische inhoudsgebieden. Deze expressies zijn ook uitbreidbaar, extra mogelijkheden te bieden tijdens het proces van de gelokaliseerde inhoud koppelen aan HTML-uitvoer regelen.

Cultuur voor automatische selectie Selectie voor elk cultuur beheren kan automatisch worden gekoppeld aan browservoorkeuren.

Model met provider Een nieuwe providermodel kan ontwikkelaars op de host resources in alternatieve bronnen, zoals bestanden en databasetabellen, terwijl het programmeermodel voor toegang tot deze bronnen consistent blijft.

Voor meer informatie over de methodologie van de globalisering in ASP.NET 2.0, gaat u naar de volgende MSDN-website:
Functies van ASP.NET 2.0 lokalisatie: Een verse benadering van webtoepassingen te lokaliseren
http://msdn2.microsoft.com/en-us/library/ms379546(VS.80).aspx

Conclusie

Dat is alles nu over globalisering problemen in ASP en ASP.NET. Ik hoop dat dit artikel helpt een paar klanten die problemen met de globalisering in ASP en ASP.NET voordat ze kiezen voor contact op met Microsoft Support. Ik zal eindigen met de volgende beschouwd:

"Overal en wanneer u ontwikkelt, denk aan de miljoenen mensen die u overal ter wereld kunt bieden. Controleer uw oplossingen World-Ready! Microsoft-hulpprogramma's en technologieën gemakkelijker internationalisering."

We zullen opnieuw volgende maand met een ander interessant onderwerp achterhalen.

Hartelijk dank voor uw tijd.
Zie de volgende Microsoft-websites voor meer informatie over problemen met globalisering in ASP en ASP.NET:
Ga naar globale: Dynamische Web Apps met IIS 5.0 en SQL Server lokaliseren
http://msdn.microsoft.com/msdnmag/issues/01/05/global/default.aspx
Ga naar globale: Ontwerpen van uw ASP-website voor ondersteuning van globalisering
http://msdn.microsoft.com/msdnmag/issues/0700/localize/default.aspx
315616 het voor het detecteren van een taal van de Client in een Active Server Pages pagina in IIS
http://support.microsoft.com/?id=315616
Bronnen en lokalisatie met het .NET Framework SDK
http://msdn2.microsoft.com/en-us/library/aa309421(VS.71).aspx
< Globalisering > ASP.NET-configuratie-element
http://msdn2.microsoft.com/en-us/library/hy4kkhe0(vs.71).aspx
Ontwerp en implementatie van richtlijnen voor webclients - globalisering en lokalisatie
http://msdn2.microsoft.com/en-us/library/ms978628.aspx
Officiële website van Microsoft: globale ontwikkeling en Computing Portal
http://msdn.microsoft.com/en-us/goglobal/bb688096
Architectuur van de globalisering voor ASP.NET
http://msdn2.microsoft.com/en-us/library/aa478974.aspx
Enterprise lokalisatie Toolkit - voor vertaalde Microsoft ASP.NET-toepassingen ontwikkelen
http://msdn2.microsoft.com/en-us/library/aa479334.aspx
839861 A System.Resources.MissingManifestResourceException uitzondering doet zich voor wanneer u probeert toegang te krijgen tot een gelokaliseerde bron

Verklarende woordenlijst

ANSI Het acroniem voor American National Standards Institute. In deze context vertegenwoordigt het een specifieke codetabel voor een specifieke taal/tekenset. In de meeste gevallen verwijst naar de Engelse codepage (windows-1252).

ASCII Een 1 byte (of een 7-bits) codering regeling. Alleen de tekens in het bereik 0-127 worden gestandaardiseerd. Het bereik van 128-255 is extensies voor ASCII- en die geen deel uitmaakt van de standaard. Een voorbeeld hiervan is het verschil tussen het bovenste bereik van de OEM-ASCII-tekenset en de VB-ASCII-tekenset.

CharSet Als u gebruikte voornamelijk voor Internet Explorer en browsers waarin wordt gemeld dat de browser het interpreteren van de tekengegevens. Voorbeeld: Response.charSet = "iso-8859-1".

Codepagina Een omzettingstabel die hoe tekens worden gecodeerd bepaalt (meestal gebruikt voor servers).

Globalisering Globalisering is een proces van het ontwerpen en maken van een toepassing die de unieke vereisten van een cultuur, regio of nationale en taalkundige behoeften kunnen worden voldaan. Met andere woorden het ontwerpen van een toepassing op een manier dat zij later kan worden gelokaliseerd is globalisering.

Landinstellingen-cultuur Taal en regio specifieke indelingen/voorkeuren met inbegrip van, datum en kalender, tijden, valutanotaties, omhulsel, sorteren en tekenreeksvergelijking, adressering, telefoon getalnotaties, papierformaten, eenheid, schrijven, richting, enz.

Id (LCID) Een DWORD-waarde waarmee de taal-id en een sorteer-ID. Het kan worden gebruikt om de opmaak van bepaalde regio opgeven voor de ex datum/tijd etc moet worden opgemaakt volgens.

Localizability De mogelijkheid van een toepassing die inhoud voor de gevraagde taalinstelling.

Lokalisatie Lokalisatie is het proces voor het vertalen van een gebruikersinterface in specifieke talen en/of landen.

Multibyte-tekenset Een tekenset in waarvan de tekens bestaan uit twee of meer bytes, zoals Japans. UTF-8 valt ook onder deze categorie. (Unicode is technisch in deze categorie, maar in Windows heeft een eigen categorie.)

Unicode Een 2-byte standaardcoderingsschema dat wordt. Unicode intern gebruikt. De API's voor Unicode worden aangegeven door een "W" aan het einde van de naam van de functie. Ook bekend als breed char; kan niet rechtstreeks van webtoepassingen worden gebruikt.

UTF-8 Een tekencodering waarbij een teken kan worden vertegenwoordigd door 1-6 bytes. In Windows is het bereik 1-3 bytes. Niet ondersteund onder NT4 voor webtoepassingen.
Voor meer informatie klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base weer te geven:
175392 UTF8 ondersteuning


Brede tekens instellen Een alias voor Unicode. Ook bekend als dubbel-Bytetekenset (DBCS-tekenset), UCS-2, UTF-16.
Omdat altijd gerust ideeën over onderwerpen die u wilt indienen wordt verholpen in toekomstige kolommen of in de Knowledge Base met behulp van de
Vragen voor het formulier.