主要的代码如下: DateTime fooDate = DateTime.Now; Encoding GBK = Encoding.GetEncoding("GBK"); Encoding utf8 = Encoding.UTF8; string datax = fooDate.ToString("hh:mm, dd MMM yyyy"); byte[] gb = GBK.GetBytes(datax); gb = Encoding.Convert(GBK, utf8, gb); datax = utf8.GetString(gb); Console.WriteLine(datax);
这个在 cmd 下运行后输出正常,但是在 Rider 里输出是 09:56, 01 9 鏈� 2016 我检查了好几遍代码觉得应该没错啊 我方法是参考到这里的 http://blog.csdn.net/u014076894/article/details/40382567
1
mythhack 2016-09-02 13:32:56 +08:00
你控制台编码有问题吧,你输出到文件试试吧。。
|
4
mingl0280 2016-09-16 04:34:59 +08:00
我记得 C#的 string 都是 unicode 的,你如果输出的时候写到了 string 里面多半输出的值就是 Unicode 再转回 ANSI 了
建议试试输出时转: Console.WriteLine(Encoding.ASCII.GetString(Encoding.UTF8.GetBytes(datax))); |
5
mingl0280 2016-09-16 04:45:25 +08:00
嗯我刚刚试了试,你如果用 Encoding.GetEncoding("GBK").GetString(Encoding.UTF8.GetBytes(datax))直接转就是你那个结果,说明你字符串被转回了 Unicode
Encoding.GetEncoding("GBK").GetString(Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding("GBK"), Encoding.UTF8.GetBytes(datax))) 试试 |