.net core 文本比对的一个诡异设计

9-11 发现的,过久了都忘了,记一下

            string s = Encoding.ASCII.GetString(new byte[] { 0x57, 00, 0x49, 00, 0x4e, 00, 0x44, 00, 0x4f, 0, 0x57, 0, 0x53, 0 });  // WINDOWS
            int i = s.IndexOf("IN");
            Console.WriteLine(i);       // -1

在 .net framework, 得到的是 -1.

然而在 .net core,得到的是 2. 也就是说它在 ASCII 编码下对比忽略了 0。

后来翻阅源码找到了一个配置节

   <InvariantGlobalization>true</InvariantGlobalization>

源码

然而这还是有问题的,启用这玩意后,CultureInfo.GetCultures(..) 得到的就只有一项了, Culture 功能完全废了。看来除了改源码也没什么好办法了。

posted @ 2021-11-26 18:50  Inshua  阅读(65)  评论(0编辑  收藏  举报