Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya dapat melarikan diri dan menyentuh rentetan unicode di C# untuk mengekalkan keserasian ASCII?
Mengekalkan aksara Unicode dalam rentetan ASCII yang dikodkan adalah penting dalam situasi tertentu. Artikel ini menyediakan kaedah untuk menukar rentetan Unicode ke dalam kesetaraan dan belakang ASCII yang melarikan diri, mengatasi batasan C#'s
(mis., Menukar π ke "?") Encoding
Cabaran Pengekodan
C#'s terbina dalam kelas merawat watak-watak di luar julat ASCII (0-127) sebagai tidak sah, menggantikannya dengan "?". Ini bermasalah apabila memelihara aksara Unicode dalam konteks ASCII diperlukan.
Encoding
Penyelesaian: Melarikan diri dan Unecaping Unicode Watak
Penyelesaian kami menggantikan aksara bukan ASCII dengan perwakilan ASCII yang melarikan diri menggunakan format .
menandakan watak Unicode, diikuti dengan titik kod heksadesimalnya. Ini memastikan watak Unicode asal dipelihara apabila dikodkan dalam ASCII.
uXXXX
u
Pengekodan aksara bukan ascii
Proses pengekodan melangkah melalui rentetan input. Sekiranya watak melebihi julat ASCII, perwakilan yang melarikan diri dilampirkan ke .
StringBuilder
penyahkodan yang melarikan diri dari Unicode Watak
Proses penyahkodan menggunakan ungkapan biasa. Mengenalpasti urutan Unicode yang dilepaskan (
) dan menukarkannya kembali ke aksara Unicode yang sepadan.
Regex.Replace
uXXXX
Contoh praktikal
kod C# berikut menunjukkan proses pengekodan dan penyahkodan:
output akan:
<code class="language-csharp">string unicodeString = "This function contains a unicode character pi (\u03a0)"; Console.WriteLine(unicodeString); string encoded = EncodeNonAsciiCharacters(unicodeString); Console.WriteLine(encoded); string decoded = DecodeEncodedNonAsciiCharacters(encoded); Console.WriteLine(decoded);</code>
Ini mempamerkan penukaran yang berkesan antara rentetan Unicode dan versi ASCII yang melarikan diri, memelihara aksara Unicode dalam persekitaran ASCII.
Atas ialah kandungan terperinci Bagaimanakah saya dapat melarikan diri dan menyentuh rentetan unicode di C# untuk mengekalkan keserasian ASCII?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!