我相信,如果我创建一个字符串默认为UTF8,但是如果字符串被人创建的地方,我想处理前要格外安全它并检查它的编码是什么,我没有看到使用字符串或编码类的任何简单的方法。我是否缺少某些东西或者是C#字符串,总是UTF8,不管是什么?在C#
回答
字符串(当然,.NET)不有编码,有效地...或者你可以查看所有这些为UTF-16,因为他们是char
值的序列,这是UTF -16个编码单元。
但是,通常情况下,只需要在从字符串转换为二进制形式(例如向下套接字或文件)时关心编码。在这一点上,你应该明确指定编码 - 字符串本身没有这个概念。
“默认”UTF-8的唯一方面是有很多.NET API被重载到要么接受编码,要么没有指定编码,使用UTF-8。 File.ReadAllText
就是这样的一个例子。然而,在阅读文件之后,“从UTF-8文件读取的文本”和“从Big5文件读取的文本”之间没有区别等。
当然,你的意思是字符串中的字符串是16位代码**单元的序列**不是点,因为代码**点* *需要21位完整的Unicode。我知道*你*知道得更好,但UTF-16诅咒折磨了很多其他程序员,并且每一次直接告诉他们的机会都值得去做。一个不能存储一个16位字符的Unicode字符;它需要一个32位整数。 – tchrist
@tchrist:我总是忘记这两个人的方向,对不起 - 现在修好了。我完全同意这是值得的。其中一天,我会想出一个助记符,以避免再次出错... –
关于助记符,也许这将有助于单位有尺寸和点无量纲。 UTF-8具有8位代码单元,而UTF-16具有16位代码单元,但代码点本身是不具有位宽的抽象整数。好吧,好几个单位都没有意义。让我想一想这一点。 – tchrist
- 1. 有没有办法修复错误的编码字符串?
- 2. 有没有办法编码Tcl字符串内的空格?
- 3. 有没有办法将连接字符串硬编码为RDLC?
- 4. 有没有办法检查一个字符串是否包含日期?
- 5. 有没有办法用Java来检查.txt文件的字符集编码?
- 6. 有没有办法编译NSRegularExpression来匹配多个字符串?
- 7. 检查一个UTF8编码字符串的有效性
- 8. 如何检查一个有效的Base64编码字符串
- 9. 有没有办法使用INSPECT TALLYING检查多个字符?
- 10. MATLAB - 有没有办法做一个字符串中使用多个字符串
- 11. 有没有办法检查readline的字符输入是一个数字?
- 12. 有没有办法让Linq查询选择一个编码为Base64字符串的时间戳字段?
- 13. 有没有办法做一个字符串。分割的空白
- 14. 有没有办法检查使用JavaScript的文件编码?
- 15. 有没有办法在Ruby中解码q编码的字符串?
- 16. 有没有办法来检查是否有一个字符串数组的下一个元素?
- 17. 有没有办法从C#代码检查池中的连接?
- 18. 有没有办法在C中分割多个字符的字符串?
- 19. 有没有办法根据字符串测试一个int? (Java)
- 20. 有没有办法在C++中用一个转义字符检查多个转义字符?
- 21. 检查一个字符串是否没有字符或数字
- 22. 有没有办法在C#中访问字符串数组中的字符串?
- 23. 有没有办法做一个“无法检测的,iframe代码”
- 24. 有没有办法通过字符串传递包含'+'的查询字符串
- 25. 有没有办法在C中传递这样的字符串?
- 26. 有没有办法从cmd字符串复制字符串?
- 27. 有没有办法在编译期间打印一个constexpr字符串?
- 28. C#字符串类:没有办法将字符推到字符串的末尾?
- 29. 有没有什么办法来检查C中的字符串中是否存在任何或全部字符?
- 30. 有没有办法改变MS ACCESS字符编码?
你从哪里得到这样的想法:字符串*有*编码还是默认为UTF-8?看到我的答案更多,但我只是想知道你有什么印象... –