Maison > développement back-end > C++ > Comment échapper aux caractères Unicode dans les cordes ASCII?

Comment échapper aux caractères Unicode dans les cordes ASCII?

DDD
Libérer: 2025-01-28 05:06:42
original
541 Les gens l'ont consulté

How to Escape Unicode Characters in ASCII Strings?

Dans la chaîne ASCII Transit le caractère unicode

Dans certains scénarios de programmation, il est courant de convertir le caractère Unicode en une chaîne ASCII rotative. Ce processus permet de conserver les caractères Unicode, sinon il peut être perdu ou remplacé par d'autres caractères pendant le processus d'encodage.

Par exemple, une chaîne contenant le caractère Unicode π (PI) doit être convertie en un format ASCII juste (U03A0). Même si la chaîne est codée dans un système qui ne prend pas en charge le caractère Unicode, cette conversion peut garantir que le caractère est conservé.

Pour cette raison, tout caractère non -ascii de la chaîne doit être remplacé par sa séquence de transposition correspondante. Ces séquences rigides commencent avec une pente arrière (), puis exprimée avec le shpstage du code Unicode. Par exemple, le point de code Unicode de π est 03A0, donc sa séquence rigide devient U03A0.

Le code C # suivant montre comment utiliser les transferts UXXXX pour coder et décoder les caractères non -ascii:

Dans ce code,
using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main(string[] args)
    {
        string unicodeString = "此函数包含一个Unicode字符pi (\u03a0)";

        Console.WriteLine(unicodeString);

        string encoded = EncodeNonAsciiCharacters(unicodeString);
        Console.WriteLine(encoded);

        string decoded = DecodeEncodedNonAsciiCharacters(encoded);
        Console.WriteLine(decoded);
    }

    static string EncodeNonAsciiCharacters(string value)
    {
        StringBuilder sb = new StringBuilder();
        foreach (char c in value)
        {
            if (c > 127)
            {
                // 此字符对于ASCII来说太大
                string encodedValue = "\u" + ((int)c).ToString("x4");
                sb.Append(encodedValue);
            }
            else
            {
                sb.Append(c);
            }
        }
        return sb.ToString();
    }

    static string DecodeEncodedNonAsciiCharacters(string value)
    {
        return Regex.Replace(
            value,
            @"\u(?<value>[a-zA-Z0-9]{4})",
            m =>
            {
                return ((char)int.Parse(m.Groups["Value"].Value, NumberStyles.HexNumber)).ToString();
            });
    }
}
Copier après la connexion
traverse la chaîne d'entrée et reconnaît les caractères non -ascii et le convertit en sa séquence de transition. D'un autre côté, la méthode utilise des expressions régulières pour analyser la chaîne de rotation et les reconvertir au caractère Unicode d'origine.

EncodeNonAsciiCharacters La sortie de ce programme montre le processus: DecodeEncodedNonAsciiCharacters

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal