Encoding.ASCII Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendapatkan pengodean untuk set karakter ASCII (7-bit).
public:
static property System::Text::Encoding ^ ASCII { System::Text::Encoding ^ get(); };
public static System.Text.Encoding ASCII { get; }
static member ASCII : System.Text.Encoding
Public Shared ReadOnly Property ASCII As Encoding
Nilai Properti
Pengodean untuk set karakter ASCII (7-bit).
Contoh
Contoh berikut menunjukkan efek pengodean ASCII pada karakter yang berada di luar rentang ASCII.
using System;
using System.Text;
class EncodingExample
{
public static void Main()
{
// Create an ASCII encoding.
Encoding ascii = Encoding.ASCII;
// A Unicode string with two characters outside the ASCII code range.
String unicodeString =
"This unicode string contains two characters " +
"with codes outside the ASCII code range, " +
"Pi (\u03a0) and Sigma (\u03a3).";
Console.WriteLine("Original string:");
Console.WriteLine(unicodeString);
// Save the positions of the special characters for later reference.
int indexOfPi = unicodeString.IndexOf('\u03a0');
int indexOfSigma = unicodeString.IndexOf('\u03a3');
// Encode the string.
Byte[] encodedBytes = ascii.GetBytes(unicodeString);
Console.WriteLine();
Console.WriteLine("Encoded bytes:");
foreach (Byte b in encodedBytes)
{
Console.Write("[{0}]", b);
}
Console.WriteLine();
// Notice that the special characters have been replaced with
// the value 63, which is the ASCII character code for '?'.
Console.WriteLine();
Console.WriteLine(
"Value at position of Pi character: {0}",
encodedBytes[indexOfPi]
);
Console.WriteLine(
"Value at position of Sigma character: {0}",
encodedBytes[indexOfSigma]
);
// Decode bytes back to a string.
// Notice missing the Pi and Sigma characters.
String decodedString = ascii.GetString(encodedBytes);
Console.WriteLine();
Console.WriteLine("Decoded bytes:");
Console.WriteLine(decodedString);
}
}
/*
This code produces the following output.
Original string:
This unicode string contains two characters with codes outside the ASCII code range, Pi (Π) and Sigma (Σ).
Encoded bytes:
[84][104][105][115][32][117][110][105][99][111][100][101][32][115][116][114][105][110][103][32][99][111][110][116][97][105][110][115][32][116][119][111][32][99][104][97][114][97][99][116][101][114][115][32][119][105][116][104][32][99][111][100][101][115][32][111][117][116][115][105][100][101][32][116][104][101][32][65][83][67][73][73][32][99][111][100][101][32][114][97][110][103][101][44][32][80][105][32][40][63][41][32][97][110][100][32][83][105][103][109][97][32][40][63][41][46]
Value at position of Pi character: 63
Value at position of Sigma character: 63
Decoded bytes:
This unicode string contains two characters with codes outside the ASCII code range, Pi (?) and Sigma (?).
*/
Imports System.Text
Class EncodingExample
Public Shared Sub Main()
' Create and ASCII encoding.
Dim ascii As Encoding = Encoding.ASCII
' A Unicode string with two characters outside the ASCII code range.
Dim unicodeString As String = "This unicode string contains two characters " + "with codes outside the ASCII code range, " + "Pi (" & ChrW(&H03A0) & ") and Sigma (" & ChrW(&H03A3) & ")."
Console.WriteLine("Original string:")
Console.WriteLine(unicodeString)
' Save the positions of the special characters for later reference.
Dim indexOfPi As Integer = unicodeString.IndexOf(ChrW(&H03A0))
Dim indexOfSigma As Integer = unicodeString.IndexOf(ChrW(&H03A3))
' Encode the string.
Dim encodedBytes As Byte() = ascii.GetBytes(unicodeString)
Console.WriteLine()
Console.WriteLine("Encoded bytes:")
For Each b In encodedBytes
Console.Write("[{0}]", b)
Next b
Console.WriteLine()
' Notice that the special characters have been replaced with
' the value 63, which is the ASCII character code for '?'.
Console.WriteLine()
Console.WriteLine("Value at position of Pi character: {0}", encodedBytes(indexOfPi))
Console.WriteLine("Value at position of Sigma character: {0}", encodedBytes(indexOfSigma))
' Decode bytes back to a string.
' Notice missing Pi and Sigma characters.
Dim decodedString As String = ascii.GetString(encodedBytes)
Console.WriteLine()
Console.WriteLine("Decoded bytes:")
Console.WriteLine(decodedString)
End Sub
End Class
'This code produces the following output.
'Original string:
'This unicode string contains two characters with codes outside the ASCII code range, Pi (Π) and Sigma (Σ).
'
'Encoded bytes:
'[84][104][105][115][32][117][110][105][99][111][100][101][32]'[115][116][114][105][110][103][32][99][111][110][116][97]'[105][110][115][32][116][119][111][32][99][104][97][114][97]'[99][116][101][114][115][32][119][105][116][104][32][99][111]'[100][101][115][32][111][117][116][115][105][100][101][32]'[116][104][101][32][65][83][67][73][73][32][99][111][100]'[101][32][114][97][110][103][101][44][32][80][105][32][40]'[63][41][32][97][110][100][32][83][105][103][109][97][32][40]'[63][41][46]
'
'Value at position of Pi character: 63
'Value at position of Sigma character: 63
'
'Decoded bytes:
'This unicode string contains two characters with codes outside 'the ASCII code range, Pi (?) and Sigma (?).
'
Keterangan
Karakter ASCII dibatasi hingga 128 karakter Unicode terendah, dari U+0000 hingga U+007F.
Saat memilih pengodean ASCII untuk aplikasi Anda, pertimbangkan hal berikut:
Pengodean ASCII biasanya sesuai untuk protokol yang memerlukan ASCII.
Jika Anda memerlukan pengodean 8-bit (yang kadang-kadang salah disebut sebagai "ASCII"), pengodean UTF-8 direkomendasikan melalui pengodean ASCII. Untuk karakter 0-7F, hasilnya identik, tetapi penggunaan UTF-8 menghindari kehilangan data dengan memungkinkan representasi semua karakter Unicode yang dapat diwakili. Perhatikan bahwa pengodean ASCII memiliki ambiguitas bit ke-8 yang dapat memungkinkan penggunaan berbahaya, tetapi pengodean UTF-8 menghilangkan ambiguitas tentang bit ke-8.
Sebelum .NET Framework versi 2.0, .NET Framework mengizinkan spoofing dengan mengabaikan bit ke-8. Dimulai dengan .NET Framework 2.0, titik kode non-ASCII mundur selama decoding.
Objek ASCIIEncoding yang dikembalikan oleh properti ini mungkin tidak memiliki perilaku yang sesuai untuk aplikasi Anda. Ini menggunakan fallback pengganti untuk mengganti setiap string yang tidak dapat dikodekan dan setiap byte yang tidak dapat didekodekan dengan karakter tanda tanya ("?"). Sebagai gantinya GetEncoding(String, EncoderFallback, DecoderFallback) , Anda dapat memanggil metode untuk membuat instans ASCIIEncoding objek yang fallback-nya adalah atau EncoderFallbackExceptionDecoderFallbackException, seperti yang diilustrasikan contoh berikut.
using System;
using System.Text;
public class Example
{
public static void Main()
{
Encoding enc = Encoding.GetEncoding("us-ascii",
new EncoderExceptionFallback(),
new DecoderExceptionFallback());
string value = "\u00C4 \u00F6 \u00AE";
try {
byte[] bytes= enc.GetBytes(value);
foreach (var byt in bytes)
Console.Write("{0:X2} ", byt);
Console.WriteLine();
string value2 = enc.GetString(bytes);
Console.WriteLine(value2);
}
catch (EncoderFallbackException e) {
Console.WriteLine("Unable to encode {0} at index {1}",
e.IsUnknownSurrogate() ?
String.Format("U+{0:X4} U+{1:X4}",
Convert.ToUInt16(e.CharUnknownHigh),
Convert.ToUInt16(e.CharUnknownLow)) :
String.Format("U+{0:X4}",
Convert.ToUInt16(e.CharUnknown)),
e.Index);
}
}
}
// The example displays the following output:
// Unable to encode U+00C4 at index 0
Imports System.Text
Module Example
Public Sub Main()
Dim enc As Encoding = Encoding.GetEncoding("us-ascii",
New EncoderExceptionFallback(),
New DecoderExceptionFallback())
Dim value As String = String.Format("{0} {1} {2}",
ChrW(&h00C4), ChrW(&h00F6), ChrW(&h00AE))
Try
Dim bytes() As Byte = enc.GetBytes(value)
For Each byt As Byte In bytes
Console.Write("{0:X2} ", byt)
Next
Console.WriteLine()
Dim value2 As String = enc.GetString(bytes)
Console.WriteLine(value2)
Catch e As EncoderFallbackException
Console.WriteLine("Unable to encode {0} at index {1}",
If(e.IsUnknownSurrogate(),
String.Format("U+{0:X4} U+{1:X4}",
Convert.ToUInt16(e.CharUnknownHigh),
Convert.ToUInt16(e.CharUnknownLow)),
String.Format("U+{0:X4}",
Convert.ToUInt16(e.CharUnknown))),
e.Index)
End Try
End Sub
End Module
' The example displays the following output:
' Unable to encode U+00C4 at index 0