c# - IsSingleByte Encoding的GetByteCount为什么要进行计算

标签 c# .net encoding character-encoding

我检查了 AsciiEncoding 的 GetByteCount 方法。它执行长计算而不是返回 String.Length。这对我来说完全没有任何意义。你知道为什么吗?

最佳答案

编辑:我刚刚尝试重现此内容,目前无法强制使用 ASCIIEncoding 来进行不同的替换。相反,我必须使用 Encoding.GetEncoding 来获取可变的。因此,对于 ASCIIEncoding,我同意...但对于 IsSingleByte 返回 true 的其他实现,您仍然会遇到下面的潜在问题。


考虑尝试获取不只包含 ASCII 字符的字符串的字节数。编码必须考虑 EncoderFallback...它可以执行任意数量的操作,包括以不确定的量增加计数。

可以针对编码器后备是“默认”编码器仅用“?”替换非 ASCII 字符的情况进行优化。不过。


进一步编辑:我只是试图将其与代理对混淆,希望它由一个问号表示。不幸的是没有:

string text = "x\ud800\udc00y";
Console.WriteLine(text.Length); // Prints 4
Console.WriteLine(Encoding.ASCII.GetByteCount(text)); // Still prints 4!

关于c# - IsSingleByte Encoding的GetByteCount为什么要进行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5610431/

相关文章:

c# - 压缩图像而不保存

c# - SQL父子查询不工作

c# - 设置要在并行中使用的内核

c# - 检查 Elasticsearch 堆大小

c# - Metro 框架中 Tab 按钮组合框的尴尬行为

java - 将 Java 字符串转换为字节数组

Java FX - Cp1252 字符编码错误

java - TextField "umlauts"在 linux 上没有显示

c# - 位图图像使用大量内存

c# - 单线程单元与多线程单元