Hoe te converteren van Unicode naar ASCII

Is er een manier om Unicode-waarden naar ASCII te converteren?


Antwoord 1, Autoriteit 100%

Om de accenten van Unicode-tekens eenvoudig te strippen, kunt u iets als:

gebruiken

string.Concat(input.Normalize(NormalizationForm.FormD).Where(
  c => CharUnicodeInfo.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark));

Antwoord 2, Autoriteit 17%

U kunt niet converteren van Unicode naar ASCII. Bijna elk personage in Unicode kan niet worden uitgedrukt in ASCII, en die die kunnen kunnen worden uitgedrukt, hebben precies dezelfde codepunten in ASCII zoals in UTF-8, wat waarschijnlijk is wat u hebt. Bijna het enige dat u kunt doen, is zelfs in de buurt van het juiste ding om alle tekens boven CodePoint 128 weg te gooien, en zelfs dat is zeer waarschijnlijk nergens in de buurt van wat uw vereisten zeggen. (De andere mogelijkheid is om geaccentueerde of geëluteerde letters te vereenvoudigen om meer dan 128 tekens ‘bijna’ uitdrukkelijk te maken, maar die nog steeds niet eens de Unicode daadwerkelijk kan bedekken.)


Antwoord 3, Autoriteit 17%

Technisch gezien, ja u kunt door Encoding.ASCIIte gebruiken.

Voorbeeld (van byte [] naar ASCII):

// Convert Unicode to Bytes
byte[] uni = Encoding.Unicode.GetBytes("Whatever unicode string you have");
// Convert to ASCII
string Ascii = Encoding.ASCII.GetString(uni);

Onthoud gewoon Unicode een veel grotere standaard dan ASCII en er zullen tekens zijn die eenvoudigweg niet correct kunnen worden gecodeerd. Neem hier een kijkje voor tabellen en een beetje meer informatie over de twee coderingen.


Antwoord 4, Autoriteit 17%

Deze oplossing kan beter aansluiten bij uw behoeften. Het stript de Unicode-tekens uit een string en houdt alleen de ASCII-tekens.

byte[] bytes = Encoding.ASCII.GetBytes("eéêëèiïaâäàåcç  test");
char[] chars = Encoding.ASCII.GetChars(bytes);
string line = new String(chars);
line = line.Replace("?", "");
//Results in "eiac test"

Houd er rekening mee dat de 2e “spatie” in de tekenreeks van het teken het CHAR is met ASCII-waarde 255


Antwoord 5, Autoriteit 11%

Nou, zien als hoe er ongeveer 100.000+ Unicode-tekens zijn en slechts 128 ASCII-tekens, is een 1-1-inrichting uiteraard onmogelijk.

U kunt de Encoding.ASCIIObject gebruiken om de ASCII byte-waarden van een Unicode-reeks te krijgen.


Antwoord 6

Als uw metagegevenvelden alleen ASCII-invoer accepteren. Unicode-tekens kunnen worden geconverteerd naar hun Tex-equivalent via Mathjax. Wat is Mathjax?
Mathjax is een JavaScript-weergave-engine voor het weergeven van Tex of MathML-gecodeerde wiskunde in browsers zonder dat het lettertype of browser-plug-ins vereist is. Elke moderne browser met Javascript ingeschakeld is Mathjax-klaar. Ga voor algemene informatie over Mathjax naar Mathjax.org.

Other episodes