Internationalization and localization tools


Culture-Sensitive C# Constructor

using System.Text

public UnicodeEncoding();

public UnicodeEncoding(bool bigEndian, bool byteOrderMark);

public UnicodeEncoding(bool bigEndian, bool byteOrderMark, bool throwOnInvalidBytes);

Internationalization (I18n) Class Overview

This class encodes Unicode characters in Unicode Transformation Format, 16-bit encoding form (UTF-16); that is, the character is encoded in a 16-bit field consisting of two consecutive bytes.

For more information see Microsoft's MSDN online documentation. Also, see specific MSDN documentation on Encoding Properties.

I18n Issues

Use of this class probably does not pose an I18n problem. Globalyzer detects it by default because during the internationalization process it is important that you are aware of all of the places in your code where you are performing character encoding conversions. Further, if UnicodeEncoding is being used to convert character data intended for use on a non-Windows platform, it is important that the endian value be properly passed to the constructor. Macintosh systems, for example, internally use UTF-16 Unicode, but big endian, which is the opposite of Windows.

The two bytes of an encoded character are stored in either little-endian or big-endian byte order depending on the computer architecture. In big-endian architectures the most significant byte is written and read first, while in little-endian architectures the least significant byte is written and read first.

This class provides a constructor that can specify whether an encoding is little-endian or big-endian, and also whether a byte order mark is used.

A UTF-16 encoding can be prefixed by a byte order mark (U+FEFF) to indicate the byte order used. It is assumed that the encoding is big-endian if the byte order mark is hexadecimal 0xFEFF, and little-endian if the byte order mark is hexadecimal 0xFFFE.

If endianness and byte order mark support are not specified to the constructor, the constructor requests little-endian byte ordering and byte order mark support

If, once you have examined a particular instantiation of the UnicodeEncoding class, you determine that it does not pose I18n problems, you can use Globalyzer's Ignore Comment functionality to ensure that it isn't picked up in a subsequent scan.

Usage Example

// Create a UnicodeEncoding to support
// big-endian byte ordering
// and include the Unicode byte order mark.
UnicodeEncoding unicodeBigEndianBOM =
   new UnicodeEncoding(true, true);

C# Encoding Information

 

Lingoport internationalization and localization services and software