MSDN Magazine - November 2008 - (Page 20) need to work with text encoded with one Figure 3 Results of ToUpper and ToLower rity implications, ordinal comparison is of these old code pages, the System.Text definitely the best choice. Ordinal comen-US result of tr-TR result of classes will allow you to work with those Character ToUpper/ToLower ToUpper/ToLower parison looks only at the value of the comas well. In general, this is only necessary pared characters; therefore, it is consistent i I İ for working with legacy applications. while culture-sensitive comparisons may ı I I New applications should use the Unihave different results based on the culture I i ı code standard. that is used. İ i i Some strings might just be printed on One of the most commonly cited probthe console or in a label, but often you lems of using culture-sensitive string comwill want to perform some action with a string. Perhaps a list of parisons for security purposes is known as “the Turkish I problem.” strings would be easier to read if it were sorted in the display. May- In most Latin alphabets, the character i (\u0069) is simply the lowbe you want to convert characters in the string to a different case. ercase version of the character I (\u0049). Most people using those These actions may seem simple enough, but looks can be deceiv- alphabets have no idea that there could be any variation in this, ing. There is a fundamental problem in word sorting that might so it’s just considered to be a default. However, in Turkish (tr-TR) not immediately be apparent. In English, for example, there is a that mapping is incorrect. The uppercase version of the character 26-character alphabet with a fixed ordering. But the characters i is the character İ (\u0130), or an uppercase I with a dot. Similarly, have multiple cases. How do you sort instances of the same word the lowercase version of the character I is the character ı (\u0131), with different casing? or a lowercase i without a dot. The Framework has three modes of string comparison: ordinal, Consider the case where you want to check to see if a URI (Uniword, and string. The ordinal comparison looks at the numeric val- form Resource Identifier) starts with the string “FILE:”. You want to ue of each character to compare, which means that ordering based do this in a case-insensitive way to make sure words such as “file:” on String.CompareOrdinal would consider “alphabet” greater than don’t get past your filter. If you compare “file:” to “FILE:” using the en-US culture and ignoring case, they will be equal. But if the trTR culture is used, they will not be equal. String.Compare defaults to the CurrentCulture. So for such situations, you should use StringComparison.OrdinalIgnoreCase. An even better option is to use String.Equals, which is ordinal by default, if you are just testing equality. Figure 3 gives you an idea of the results of ToUpper and ToLower for the letter I. For more information on comparing strings, please see Most modern operating systems allow users to specify language preferences. msdn.microsoft.com/ms973919. “Alphabet.” Word comparison is the default. It is culture sensitive and might treat certain non-alphanumeric characters, such as the hyphen, as a special case. It can give them a small weight or consideration so that, for example, “a-lphabet” and “alphabet” sort near each other. String comparison is also culture sensitive but has no special cases, and the non-alphanumeric characters all sort before the alphanumeric ones. If you were to do a culture-sensitive comparison for en-US using String.Compare, you would see that “Alphabet” is greater than “alphabet.” If you were to do an ordinal comparison ignoring case, they would be equal. System.Globalization.CompareOptions includes nine different options that indicate which parameters to take into account when sorting. Each culture has its own set of characters and sort order. Some have more than one. For example, Spanish (Spain), es-ES, uses International sorting by default, but can use the Traditional sort order as an alternative. Chinese (China), zh-CN, sorts by pronunciation by default, but can also sort by stroke count. Each CultureInfo object in the Framework has a CompareInfo property that is used for comparing strings. The Framework stores this data. Generally speaking, the culture-sensitive ordering is much better for sorting and displaying. But when it comes to testing equality of strings, especially in certain cases when there might be secu20 msdn magazine Silverlight Globalization Globalization is especially important to Silverlight applications. With a desktop application, you can know exactly who your target audience is. But a Silverlight application on the Web can be seen by anyone. Silverlight has much of the same globalization infrastructure as the desktop Framework, but it gets most of its data from the underlying operating system. This helps a Silverlight application running on Windows look more like a Windows-based application and a Silverlight application running on a Mac OS look more like a Mac OS application. Many of the differences between the desktop CLR and Silverlight (CoreCLR) stem from the fact that for speed and ease of download, a smaller runtime was needed for Silverlight. As such, Silverlight gets much more information from the underlying operating system rather than from carrying it all around in the CoreCLR. For instance, the CoreCLR doesn’t have the sorting tables stored, so it only has access to those that the operating system has. Additionally, Silverlight only uses Unicode and does not have the legacy code pages. It also gets culture information from the operating system. This means that you really have to be prepared to handle a wide variety of data. It has always been the case that data might not be available if Clr Inside Out http://msdn.microsoft.com/ms973919
Table of Contents Feed for the Digital Edition of MSDN Magazine - November 2008 Contents MSDN Magazine - November 2008 Toolbox CLR Inside Out Data Points Cutting Edge Security Briefs Test Your Security IQ Agile SDL Access Control Utility Spotlight RIA Test Run Wicked Code Foundations Team System End Bracket MSDN Magazine - November 2008 MSDN Magazine - November 2008 - (Page Intro) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page Cover1) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page Cover2) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page 1) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page 2) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page 3) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page 4) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page 5) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page 6) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page 7) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page 8) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page 9) MSDN Magazine - November 2008 - MSDN Magazine - November 2008 (Page 10) MSDN Magazine - November 2008 - Toolbox (Page 11) MSDN Magazine - November 2008 - Toolbox (Page 12) MSDN Magazine - November 2008 - Toolbox (Page 13) MSDN Magazine - November 2008 - Toolbox (Page 14) MSDN Magazine - November 2008 - Toolbox (Page 15) MSDN Magazine - November 2008 - Toolbox (Page 16) MSDN Magazine - November 2008 - CLR Inside Out (Page 17) MSDN Magazine - November 2008 - CLR Inside Out (Page 18) MSDN Magazine - November 2008 - CLR Inside Out (Page 19) MSDN Magazine - November 2008 - CLR Inside Out (Page 20) MSDN Magazine - November 2008 - CLR Inside Out (Page 21) MSDN Magazine - November 2008 - CLR Inside Out (Page 22) MSDN Magazine - November 2008 - Data Points (Page 23) MSDN Magazine - November 2008 - Data Points (Page 24) MSDN Magazine - November 2008 - Data Points (Page 25) MSDN Magazine - November 2008 - Data Points (Page 26) MSDN Magazine - November 2008 - Data Points (Page 27) MSDN Magazine - November 2008 - Data Points (Page 28) MSDN Magazine - November 2008 - Data Points (Page 29) MSDN Magazine - November 2008 - Data Points (Page 30) MSDN Magazine - November 2008 - Cutting Edge (Page 31) MSDN Magazine - November 2008 - Cutting Edge (Page 32) MSDN Magazine - November 2008 - Cutting Edge (Page 33) MSDN Magazine - November 2008 - Cutting Edge (Page 34) MSDN Magazine - November 2008 - Cutting Edge (Page 35) MSDN Magazine - November 2008 - Cutting Edge (Page 36) MSDN Magazine - November 2008 - Cutting Edge (Page 37) MSDN Magazine - November 2008 - Cutting Edge (Page 38) MSDN Magazine - November 2008 - Cutting Edge (Page 39) MSDN Magazine - November 2008 - Cutting Edge (Page 40) MSDN Magazine - November 2008 - Security Briefs (Page 41) MSDN Magazine - November 2008 - Security Briefs (Page 42) MSDN Magazine - November 2008 - Security Briefs (Page 43) MSDN Magazine - November 2008 - Security Briefs (Page 44) MSDN Magazine - November 2008 - Security Briefs (Page 45) MSDN Magazine - November 2008 - Test Your Security IQ (Page 46) MSDN Magazine - November 2008 - Test Your Security IQ (Page 47) MSDN Magazine - November 2008 - Test Your Security IQ (Page 48) MSDN Magazine - November 2008 - Test Your Security IQ (Page 49) MSDN Magazine - November 2008 - Test Your Security IQ (Page 50) MSDN Magazine - November 2008 - Test Your Security IQ (Page 51) MSDN Magazine - November 2008 - Agile SDL (Page 52) MSDN Magazine - November 2008 - Agile SDL (Page 53) MSDN Magazine - November 2008 - Agile SDL (Page 54) MSDN Magazine - November 2008 - Agile SDL (Page 55) MSDN Magazine - November 2008 - Agile SDL (Page 56) MSDN Magazine - November 2008 - Agile SDL (Page 57) MSDN Magazine - November 2008 - Agile SDL (Page 58) MSDN Magazine - November 2008 - Access Control (Page 59) MSDN Magazine - November 2008 - Access Control (Page 60) MSDN Magazine - November 2008 - Access Control (Page 61) MSDN Magazine - November 2008 - Access Control (Page 62) MSDN Magazine - November 2008 - Access Control (Page 63) MSDN Magazine - November 2008 - Access Control (Page 64) MSDN Magazine - November 2008 - Access Control (Page 65) MSDN Magazine - November 2008 - Access Control (Page 66) MSDN Magazine - November 2008 - Access Control (Page 67) MSDN Magazine - November 2008 - Access Control (Page 68) MSDN Magazine - November 2008 - Access Control (Page 69) MSDN Magazine - November 2008 - Access Control (Page 70) MSDN Magazine - November 2008 - Access Control (Page 71) MSDN Magazine - November 2008 - Utility Spotlight (Page 72) MSDN Magazine - November 2008 - Utility Spotlight (Page 73) MSDN Magazine - November 2008 - Utility Spotlight (Page 74) MSDN Magazine - November 2008 - Utility Spotlight (Page 75) MSDN Magazine - November 2008 - Utility Spotlight (Page 76) MSDN Magazine - November 2008 - Utility Spotlight (Page 77) MSDN Magazine - November 2008 - Utility Spotlight (Page 78) MSDN Magazine - November 2008 - Utility Spotlight (Page 79) MSDN Magazine - November 2008 - Utility Spotlight (Page 80) MSDN Magazine - November 2008 - RIA (Page 81) MSDN Magazine - November 2008 - RIA (Page 82) MSDN Magazine - November 2008 - RIA (Page 83) MSDN Magazine - November 2008 - RIA (Page 84) MSDN Magazine - November 2008 - RIA (Page 85) MSDN Magazine - November 2008 - RIA (Page 86) MSDN Magazine - November 2008 - RIA (Page 87) MSDN Magazine - November 2008 - RIA (Page 88) MSDN Magazine - November 2008 - RIA (Page 89) MSDN Magazine - November 2008 - RIA (Page 90) MSDN Magazine - November 2008 - Test Run (Page 91) MSDN Magazine - November 2008 - Test Run (Page 92) MSDN Magazine - November 2008 - Test Run (Page 93) MSDN Magazine - November 2008 - Test Run (Page 94) MSDN Magazine - November 2008 - Test Run (Page 95) MSDN Magazine - November 2008 - Test Run (Page 96) MSDN Magazine - November 2008 - Test Run (Page 97) MSDN Magazine - November 2008 - Test Run (Page 98) MSDN Magazine - November 2008 - Wicked Code (Page 99) MSDN Magazine - November 2008 - Wicked Code (Page 100) MSDN Magazine - November 2008 - Wicked Code (Page 101) MSDN Magazine - November 2008 - Wicked Code (Page 102) MSDN Magazine - November 2008 - Wicked Code (Page 103) MSDN Magazine - November 2008 - Wicked Code (Page 104) MSDN Magazine - November 2008 - Wicked Code (Page 105) MSDN Magazine - November 2008 - Wicked Code (Page 106) MSDN Magazine - November 2008 - Foundations (Page 107) MSDN Magazine - November 2008 - Foundations (Page 108) MSDN Magazine - November 2008 - Foundations (Page 109) MSDN Magazine - November 2008 - Foundations (Page 110) MSDN Magazine - November 2008 - Foundations (Page 111) MSDN Magazine - November 2008 - Foundations (Page 112) MSDN Magazine - November 2008 - Team System (Page 113) MSDN Magazine - November 2008 - Team System (Page 114) MSDN Magazine - November 2008 - Team System (Page 115) MSDN Magazine - November 2008 - Team System (Page 116) MSDN Magazine - November 2008 - Team System (Page 117) MSDN Magazine - November 2008 - Team System (Page 118) MSDN Magazine - November 2008 - Team System (Page 119) MSDN Magazine - November 2008 - End Bracket (Page 120) MSDN Magazine - November 2008 - End Bracket (Page Cover3) MSDN Magazine - November 2008 - End Bracket (Page Cover4)
For optimal viewing of this digital publication, please enable JavaScript and then refresh the page. If you would like to try to load the digital publication without using Flash Player detection, please click here.