Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk melepaskan watak Unicode dalam rentetan ASCII?

Bagaimana untuk melepaskan watak Unicode dalam rentetan ASCII?

DDD
DDDasal
2025-01-28 05:06:42489semak imbas

How to Escape Unicode Characters in ASCII Strings?

Dalam rentetan ASCII transit watak Unicode

Dalam beberapa senario pengaturcaraan, ia adalah permintaan yang sama untuk menukar watak Unicode ke dalam rentetan ASCII berputar. Proses ini membolehkan mengekalkan aksara Unicode, jika tidak, ia mungkin hilang atau digantikan oleh aksara lain semasa proses pengekodan.

Sebagai contoh, rentetan yang mengandungi aksara Unicode π (pi) perlu ditukar menjadi format ASCII yang benar (U03A0). Walaupun rentetan dikodkan dalam sistem yang tidak menyokong watak Unicode, penukaran ini dapat memastikan watak itu dikekalkan.

Atas sebab ini, mana -mana watak bukan -CII dalam rentetan perlu digantikan dengan urutan transposisi yang sepadan. Urutan tegar ini bermula dengan cerun belakang (), dan kemudian dinyatakan dengan shpstage kod Unicode. Sebagai contoh, titik kod Unicode π adalah 03A0, jadi urutan tegarnya menjadi U03A0.

Kod C#berikut menunjukkan cara menggunakan pemindahan uxxxx untuk mengekod dan menyahkod aksara bukan -cii:

Dalam kod ini,
<code class="language-csharp">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();
            });
    }
}</code>
melintasi rentetan input dan mengiktiraf aksara bukan -CII, dan menukarkannya ke urutan peralihannya. Sebaliknya, kaedah menggunakan ungkapan biasa untuk menganalisis rentetan putaran dan menukarnya kembali ke watak Unicode asal.

EncodeNonAsciiCharacters output program ini menunjukkan proses: DecodeEncodedNonAsciiCharacters

Atas ialah kandungan terperinci Bagaimana untuk melepaskan watak Unicode dalam rentetan ASCII?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn