The output char buffer is too small to contain the decoded characters, encoding 'Unicode (UTF-8)' fa...

本文探讨了使用BinaryReader.PeekChar()时遇到的问题及解决方案。当遇到Unicode字符长度不一致导致的问题时,作者建议使用BaseStream.Position和BaseStream.Length来判断文件结束,或者更改Encoding格式为ASCII来规避这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Exception when executing

if (br.PeekChar() != -1)

br is a binary reader.

The data to peak is D000 (D0=208)

 

The cause is, for PeekChar, after peak, the value will be transformed to char.

But Unicode and normal char has different length.

 

If I use br.ReadByte(), there will be no problem.

But if it hit the end of one file, br.ReadByte() would threw an error.

 

I googled and found many similar errors.

The best article that solved my problem is

https://social.msdn.microsoft.com/Forums/vstudio/en-US/7bd62472-b4ff-47c7-9bbd-7af9512d0301/binaryreaderpeekchar-fails-when-checking-for-end-of-file?forum=clr

 

Use the following to identify a file end and don't use PeekChar().

if(reader.BaseStream.Position == reader.BaseStream.Length)

 

or exclaim the Encoding format. Then PeekChar will be OK to use.

BinaryReader binaryReader = new BinaryReader(memoryStream, Encoding.ASCII);

 

I used the second one. problem solved.

 

转载于:https://www.cnblogs.com/jiceberg420/p/5659827.html

### PyCharm 安装过程中遇到的 UTF-8 编码问题及其解决方案 当在 Windows 平台上安装 PyCharm 时,可能会遭遇由字符编码引发的一系列问题。具体表现为,在处理某些包含非 ASCII 字符(如中文)的文件或命令行参数时,Python 解释器抛出了 `UnicodeDecodeError` 或者类似的异常。 #### 设置 Python 文件默认编码方式 对于单个 Python 脚本而言,可以在文件开头声明其使用的字符集为 UTF-8 来避免此类错误的发生: ```python # -*- coding: utf-8 -*- ``` 此方法适用于大多数情况下的脚本编写环境[^1]。 #### 修改 PyCharm 的 JVM 参数来支持多字节字符 如果是在 PyCharm 中遇到了与上述相似的问题,则可以通过调整虚拟机选项 (VM Options) 来解决问题。编辑位于 PyCharm 安装目录下名为 `pycharm64.exe.vmoptions` (针对 64 位版本)或 `pycharm.exe.vmoptions` (32 位版)的配置文件,加入以下两行设置以确保 Java 运行时能够正确识别并解析各种语言的文字: ``` -Dfile.encoding=UTF-8 -server ``` 完成更改之后重启 IDE 即可使新的设定生效[^2]。 #### 更改终端编码格式 有时即使已经设置了正确的文件编码,仍然会在执行外部工具或者通过内置终端调用其他应用程序时碰到同样的麻烦。此时可以尝试改变操作系统的区域性和语言偏好设置,或者是直接指定 CMD/Terminal 使用特定的代码页来进行输入输出转换。例如,在 Windows 上可通过命令提示符运行下面这条指令切换到 UTF-8 模式: ```bash chcp 65001 ``` 另外一种做法是利用 PowerShell 替代传统 DOS Shell 成为主要开发界面,因为前者天生就具备更好的国际化特性和支持程度[^3]。 #### 配置项目解释器和构建路径 确保所选用的 Python 版本本身也启用了宽字符集(Wide Characters Support),这通常意味着要选择 Miniconda 或 Anaconda 发行版而非官方标准分发渠道的产品;同时注意清理旧有的编译缓存以及依赖库副本以防残留数据干扰新环境搭建过程[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值