You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# .NET中StringBuilder.AppendLine无法保存非英文字符的问题

问题解决:捷克语特殊字符在控制台输入中丢失

问题根源

.NET 4环境下,控制台默认的输入/输出编码不支持捷克语特殊字符(如č、š、ž、ů等),导致Console.ReadLine()读取时错误解析这些字符,最终出现字符丢失或内容为空的情况。

解决方案

在程序启动的Main方法开头,设置控制台的输入和输出编码为支持捷克语的编码,推荐两种方式:

方式1:使用Windows-1250编码(中欧语言专用)

using System;
using System.Text;

namespace YourProject
{
    class Program
    {
        static void Main(string[] args)
        {
            // 配置控制台编码,适配捷克语特殊字符
            Console.InputEncoding = Encoding.GetEncoding(1250);
            Console.OutputEncoding = Encoding.GetEncoding(1250);
            
            // 后续业务代码
            CreateNewRecord();
        }

        // 你的CreateNewRecord方法保持不变
        public static void CreateNewRecord()
        {
            Console.Write("Date: ");
            if (DateTime.TryParse(Console.ReadLine(), out DateTime parsedDate))
            {
                Console.WriteLine("\nText: ");

                StringBuilder sb = new StringBuilder();

                while (true)
                {
                    string textLine = Console.ReadLine();
                    if (textLine.ToLower() == "save")
                        break;
                    sb.AppendLine(textLine);
                }
                string recordText = sb.ToString();
                Program.records.AddLast(new Record(parsedDate, recordText));
            }
            else
            {
                Console.WriteLine("Wrong date format.");
            }
        }
    }
}

方式2:使用UTF-8编码

如果控制台环境支持UTF-8(部分现代控制台或配置后兼容),也可以用以下设置:

Console.InputEncoding = Encoding.UTF8;
Console.OutputEncoding = Encoding.UTF8;

原理说明

  • Console.ReadLine()默认采用系统OEM编码解析输入(如美国地区为CP437),这类编码不包含捷克语特殊字符的映射,导致读取时字符被错误替换或丢弃。
  • 切换到Windows-1250或UTF-8后,输入的特殊字符会被正确读取、存储,后续通过ToString()输出时也能正常显示。

验证效果

设置编码后,输入včera或ůčšěž,执行Console.WriteLine(records.Last());即可看到完整的特殊字符内容,不会出现丢失或为空的问题。

内容的提问来源于stack exchange,提问作者Lamecode0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 11:37:40