Encoding.ASCII Property


Gets an encoding for the ASCII (7-bit) character set.

Namespace:   System.Text
Assembly:  mscorlib (in mscorlib.dll)

Public Shared ReadOnly Property ASCII As Encoding

Property Value

Type: System.Text.Encoding

An encoding for the ASCII (7-bit) character set.

ASCII characters are limited to the lowest 128 Unicode characters, from U+0000 to U+007F.

When selecting the ASCII encoding for your app, consider the following:

  • The ASCII encoding is usually appropriate for protocols that require ASCII.

  • If you requires 8-bit encoding (which is sometimes incorrectly referred to as "ASCII"), the UTF-8 encoding is recommended over the ASCII encoding. For the characters 0-7F, the results are identical, but use of UTF-8 avoids data loss by allowing representation of all Unicode characters that are representable. Note that the ASCII encoding has an 8th bit ambiguity that can allow malicious use, but the UTF-8 encoding removes ambiguity about the 8th bit.

  • Prior to the .NET Framework version 2.0, the .NET Framework allowed spoofing by ignoring the 8th bit. Beginning with the .NET Framework 2.0, non-ASCII code points fall back during decoding.

The ASCIIEncoding object that is returned by this property might not have the appropriate behavior for your app. It uses replacement fallback to replace each string that it cannot encode and each byte that it cannot decode with a question mark ("?") character. Instead, you can call the GetEncoding(String, EncoderFallback, DecoderFallback) method to instantiate an ASCIIEncoding object whose fallback is either an EncoderFallbackException or a DecoderFallbackException, as the following example illustrates.

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))

         Dim bytes() As Byte = enc.GetBytes(value)
         For Each byt As Byte In bytes
            Console.Write("{0:X2} ", byt)
         Dim value2 As String = enc.GetString(bytes)
      Catch e As EncoderFallbackException
         Console.WriteLine("Unable to encode {0} at index {1}", 
                              String.Format("U+{0:X4} U+{1:X4}", 
      End Try
   End Sub
End Module
' The example displays the following output:
'       Unable to encode U+00C4 at index 0

The following example demonstrates the effect of the ASCII encoding on characters that are outside the ASCII range.

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:")

      ' 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("Encoded bytes:")
      For Each b In encodedBytes
          Console.Write("[{0}]", b)
      Next b

      ' Notice that the special characters have been replaced with
      ' the value 63, which is the ASCII character code for '?'.
      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("Decoded bytes:")
  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:
'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 (?).

Universal Windows Platform
Available since 10
.NET Framework
Available since 1.1
Return to top