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

Dart从控制台读取俄语文本打印无输出、字符编码全为0如何解决

Dart 控制台读取俄语文本异常解决方案

问题根因

你遇到的读取后打印无内容、codeUnits全为0的问题,核心是编码不匹配:Dart解码用的UTF-8格式和控制台输入的字节流编码不一致,解码后生成的就是无效的空字符。

修复步骤

1. 调整系统控制台编码

如果是Windows系统,运行Dart代码前先在当前控制台执行命令切换编码为UTF-8:
chcp 65001
Linux、macOS系统默认终端为UTF-8编码,无需额外调整。
注意:不要用IDE内置控制台测试,多数IDE内置控制台编码默认不是UTF-8,会触发读取异常,需使用系统原生终端运行代码。

2. 调整Dart代码写法

优先设置全局stdin编码,无需手动给单步读取方法指定编码参数:

同步读取示例

import 'dart:convert';
import 'dart:io';

void main() {
  // 全局设置stdin编码为utf8,统一读取和解码格式
  stdin.encoding = utf8;
  print('请输入俄语单词:');
  String? answer = stdin.readLineSync();
  if (answer != null) {
    print('读取到的内容:$answer');
    print('codeUnits列表:${answer.codeUnits}');
  }
}

流式读取示例

import 'dart:convert';
import 'dart:io';

void main() async {
  stdin.encoding = utf8;
  print('请输入俄语单词,输入exit退出:');
  await for (String line in stdin.lines) {
    if (line == 'exit') break;
    print('读取到的内容:$line');
  }
}

其他注意事项

  • 无需手动强制解包readLineSync的返回值,做空判断即可避免空安全异常
  • 俄语属于UTF-8兼容字符,只要编码匹配,不需要做额外的字符转换即可正常读取、打印

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:36:04