«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как избежать символов Unicode в струнах ASCII?

Как избежать символов Unicode в струнах ASCII?

Опубликовано в 2025-03-22
Просматривать:372

How to Escape Unicode Characters in ASCII Strings?

Escape Unicode символы в ascii string

]]

в некоторых сценариях программирования преобразование символов Unicode в избежание строк ASCII является распространенным требованием. Этот процесс позволяет сохранить символы Unicode, в противном случае он может быть потерян или заменен другими символами в процессе кодирования.

]

Например, строка, содержащая символ Unicode π (PI), необходимо преобразовать в сбежал формат ASCII (\ U03A0). Это преобразование гарантирует, что символы сохраняются, даже если строка кодируется в системах, которые не поддерживают символы Unicode.

]

для этого, любые не ASCII символы в строке должны быть заменены их соответствующей последовательности побега. Эти последовательности Escape начинаются с BackSlash (\), за которым следует шестнадцатеричное представление точек кода Unicode. Например, точка кода Unicode π составляет 03A0, поэтому ее последовательность побега становится \ U03A0.

]

Следующий код C# демонстрирует, как кодировать и декодировать не ASCII символы с использованием формата \ uxxxx 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();
            });
    }
}

В этом коде метод incodenasciicharacters пересекает входную строку и распознает символы не ASCII, преобразуя их в последовательность побега. С другой стороны, метод decodeencodednasciicharacters использует регулярное выражение для сбежавших строк, и преобразует их обратно в исходные символы Unicode.

]

вывод этой программы демонстрирует процесс:

]
此函数包含一个Unicode字符pi (π)
此函数包含一个Unicode字符pi (\u03a0)
此函数包含一个Unicode字符pi (π)
]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3