Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Util / CodePageUtils.cs / 1305376 / CodePageUtils.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Util { using System.Collections; // // Utility class to help with determining if a given code page // is ASCII compatible (preserves 0-127 Unicode characters as is) // internal static class CodePageUtils { /* The following array of ASCII compatible code pages is generated by running this code on a machine that has _many_ codepages installed: using System; using System.Collections; using System.Text; public class qq { public static void Main(string[] args) { ArrayList list = new ArrayList(); byte[] bb = new byte[128]; for (int i = 0; i < 128; i++) bb[i] = (byte)i; String asciiString = Encoding.ASCII.GetString(bb); for (int i = 1; i < 100000; i++) { try { Encoding e = Encoding.GetEncoding(i); byte[] xx = e.GetBytes(asciiString); if (xx.Length == 128) { bool good = true; for (int j = 0; j < 128; j++) { if (bb[j] != xx[j]) { good = false; break; } } if (good) list.Add(i); } } catch {} } int n = list.Count; Console.Write("private const int[] _asciiCompatCodePages = new int[" + n + "] {\r\n "); for (int i = 0; i < n; i++) { Console.Write("{0,5}", list[i]); if (i < n-1) Console.Write(", "); if (((i+1) % 10) == 0) Console.Write("\r\n "); } Console.Write("\r\n};\r\n"); } } */ private static int[] _asciiCompatCodePages = new int[79] { 437, 708, 720, 737, 775, 850, 852, 855, 857, 858, 860, 861, 862, 863, 864, 865, 866, 869, 874, 932, 936, 949, 950, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1361, 10000, 10001, 10002, 10003, 10004, 10005, 10006, 10007, 10008, 10010, 10017, 10029, 10079, 10081, 10082, 20000, 20001, 20002, 20003, 20004, 20005, 20127, 20866, 20932, 20936, 20949, 21866, 28591, 28592, 28593, 28594, 28595, 28596, 28597, 28598, 28599, 28605, 38598, 50220, 50221, 50222, 50225, 50227, 51932, 51949, 65001 }; internal /*public*/ static bool IsAsciiCompatibleCodePage(int codepage) { //alternatives to binary search considered //Hashtable: static initialization increases startup up, perf relative //Byte array would consume ~8K, but lookups constant //with 80 entries, binary search limited to 7 indexes into array int lo = 0; int hi = 78; while(lo <= hi) { int i = (lo + hi) >> 1; int c; c = _asciiCompatCodePages[i] - codepage; if (c == 0) return true; //i is the index of the item if (c < 0) { lo = i + 1; } else { hi = i - 1; } } return false; //lo is the index of the item immediately after //~lo returned in some implementations for false indicator with additional info } internal const int CodePageUT8 = 65001; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TabletDevice.cs
- FlowDocumentPage.cs
- FixedSOMContainer.cs
- DSASignatureDeformatter.cs
- TextInfo.cs
- ObjectKeyFrameCollection.cs
- MatrixConverter.cs
- ListViewInsertedEventArgs.cs
- SqlBuffer.cs
- SiteMapProvider.cs
- HttpProxyTransportBindingElement.cs
- ExpressionDumper.cs
- DesignerTransactionCloseEvent.cs
- DataRelation.cs
- XamlNamespaceHelper.cs
- RemoteDebugger.cs
- SecurityRuntime.cs
- ConfigXmlSignificantWhitespace.cs
- WinInetCache.cs
- RuleSettingsCollection.cs
- SequenceQuery.cs
- DataListItemEventArgs.cs
- CloseCollectionAsyncResult.cs
- WindowsFormsEditorServiceHelper.cs
- TargetParameterCountException.cs
- ContextConfiguration.cs
- SinglePageViewer.cs
- LineGeometry.cs
- Dictionary.cs
- ControlBindingsConverter.cs
- ContainerSelectorActiveEvent.cs
- LongValidatorAttribute.cs
- TargetControlTypeCache.cs
- SAPIEngineTypes.cs
- RowUpdatedEventArgs.cs
- StringStorage.cs
- AdapterUtil.cs
- PageAdapter.cs
- MetadataCache.cs
- TcpPortSharing.cs
- DesignerActionItemCollection.cs
- DynamicResourceExtension.cs
- OciHandle.cs
- XmlCodeExporter.cs
- EntityConnectionStringBuilder.cs
- GraphicsContainer.cs
- NavigationWindowAutomationPeer.cs
- RemotingConfiguration.cs
- EntityParameterCollection.cs
- X509SecurityTokenAuthenticator.cs
- DrawingServices.cs
- SourceChangedEventArgs.cs
- ToolStripManager.cs
- GacUtil.cs
- Delegate.cs
- TextRangeProviderWrapper.cs
- SingleAnimation.cs
- HashMembershipCondition.cs
- ConsoleKeyInfo.cs
- SymbolTable.cs
- TransactionScope.cs
- ProtocolsSection.cs
- ApplicationFileParser.cs
- COM2PropertyDescriptor.cs
- UInt16Storage.cs
- UrlEncodedParameterWriter.cs
- DoubleLinkListEnumerator.cs
- RowUpdatingEventArgs.cs
- DataControlFieldCell.cs
- RuleProcessor.cs
- DeleteHelper.cs
- RestHandlerFactory.cs
- XPathDocumentBuilder.cs
- PlatformCulture.cs
- X509Certificate.cs
- ContainsRowNumberChecker.cs
- Interop.cs
- OSEnvironmentHelper.cs
- HyperLinkColumn.cs
- DetailsViewUpdateEventArgs.cs
- SettingsAttributeDictionary.cs
- AssemblyAssociatedContentFileAttribute.cs
- Pkcs7Recipient.cs
- PeerCustomResolverBindingElement.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- CoreChannel.cs
- SqlRetyper.cs
- DelimitedListTraceListener.cs
- AddInServer.cs
- DataGridViewColumnConverter.cs
- FormatConvertedBitmap.cs
- EndEvent.cs
- TypeDescriptor.cs
- JournalEntryStack.cs
- ListViewGroupItemCollection.cs
- HtmlElement.cs
- XmlSerializableServices.cs
- StandardCommandToolStripMenuItem.cs
- SharedRuntimeState.cs
- httpstaticobjectscollection.cs