"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como escapar dos caracteres Unicode em Strings ASCII?

Como escapar dos caracteres Unicode em Strings ASCII?

Postado em 2025-03-22
Navegar:528

How to Escape Unicode Characters in ASCII Strings?

escapar dos caracteres unicode em String ascii

]

Em alguns cenários de programação, a conversão de caracteres Unicode em strings ASCII escapados é um requisito comum. Esse processo permite que os caracteres Unicode sejam preservados, caso contrário, pode ser perdido ou substituído por outros caracteres durante o processo de codificação.

Por exemplo, uma sequência que contém o caractere unicode π (PI) precisa ser convertida para o formato ASCII escapado (\ u03a0). Essa conversão garante que os caracteres sejam preservados, mesmo que a string seja codificada em sistemas que não suportam caracteres Unicode.

Para fazer isso, quaisquer caracteres não-ASCII na string precisam ser substituídos por sua sequência de fuga correspondente. Essas seqüências de fuga começam com uma barra de barragem (\) seguida de uma representação hexadecimal dos pontos de código Unicode. Por exemplo, o ponto de código Unicode de π é 03A0, então sua sequência de escape se torna \ u03a0.

O seguinte código C# demonstra como codificar e decodificar caracteres não-ASCII usando o formato \ uxxxx de escape:

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(?[a-zA-Z0-9]{4})",
            m =>
            {
                return ((char)int.Parse(m.Groups["Value"].Value, NumberStyles.HexNumber)).ToString();
            });
    }
}

Neste código, o método codenonasciicharacters atravessa a sequência de entrada e reconhece caracteres não-ASCII, convertendo-os em sua sequência de fuga. Por outro lado, o método decodeencodedNonasciicharacters usa uma expressão regular para analisar strings escapados e os converte de volta aos caracteres Unicode originais.

A saída deste programa demonstra o processo:

此函数包含一个Unicode字符pi (π)
此函数包含一个Unicode字符pi (\u03a0)
此函数包含一个Unicode字符pi (π)
]
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3