我想使用Replace()方法,但使用十六进制值而不是字符串值。
我在C#中有一个编写文本文件的程序。
我不知道为什么,但是当程序写'°'( - >数字)时,它的写入是º°(十六进制:C2 B0而不是B0)。
我只是想修补它,以便将其核心化。
是否可以重新放置以便用B0替换C2B0?怎么做?
非常感谢:)
答案 0 :(得分:0)
Not sure if this is the best solution for your problem but if you want a replace function for a string using hex values this will work:
<html>
<head><style>
table { border-collapse: collapse; }
table, th, td { border: 1px solid black; padding: 10px;}
</style></head>
<body>
<table class='rule level_1'>
<tr>
<td>
<div style="display: inline-block">
Lorem ipsum
<hr>
</div>
<br>
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
</td>
</tr>
<tr>
<td>
<div style="display: inline-block">
Lorem ipsum dolor sit amet, consectetur adipiscing elit
<hr>
</div>
<br>
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
</td>
</tr>
</table>
</body>
</html>
答案 1 :(得分:0)
C#字符串是Unicode。将它们写入文件时,必须应用编码。 File.WriteAllText
使用的默认编码为utf-8 with no byte order mark。
双字节序列0xC2B0表示°度符号U + 00B0代码点in utf-8。
要删除0xC2部分,请应用其他编码,例如latin-1:
var latin1 = Encoding.GetEncoding(1252);
File.WriteAllText(path, text, latin1);
解决问题的“十六进制替换”概念:从现有文件中删除utf-8前导字节的最佳做法是使用utf-8执行ReadAllText
,然后执行{{1}如上所示(如果文件太大而无法读取整个内存,则流分块)。
单字节字符编码不能代表所有Unicode字符,因此您的DataTable中的任何此类字符都会进行替换。
作为°的再现必须归咎于用于显示文件的查看器/编辑器。