Wpf WebBrowser.Print() 带有阿拉伯字符
Wpf WebBrowser.Print() with arabic character
我正在尝试使用 WebBrowser.Print() 来打印一个包含阿拉伯字符的 html 文件,问题是阿拉伯字符变成了奇怪的字符
下面是 html 文件代码:
<html>
<head>
<meta http-equiv="Content - Type" content="text / html; charset = windows - 1252" />
</head>
<body>
<table border='0' style='width:300px;color:black;'>
<tr>
<td colspan=3 align = center><b><font size= 4>القاسم</font></b> </td> </tr><tr>
<td colspan=3>-------------------------------------------------------</td> </tr><tr>
<td colspan=2><b>1</b> بابول</td><td align = right>1.00 LBP</td></tr><tr>
<td colspan=2><b>1</b> Biskrem</td><td align = right>3.00 LBP</td></tr><tr>
<td colspan=2><b>1</b> تويكس</td><td align = right>1.00 LBP</td></tr><tr>
<td colspan=3>You Bought 3 Items</td></tr><tr>
<td colspan=3>-------------------------------------------------------</td> </tr><tr>
<td>Subtotal</td> <td colspan=2 align = right>5.00 LBP</td> </tr><tr>
<td>Tax</td> <td colspan=2 align = right>0.00 LBP</td> </tr><tr>
<td colspan=3>-------------------------------------------------------</td> </tr><tr>
<td>Total</td> <td colspan=2 align = right><b>5.00 LBP</b></td> </tr><tr>
<td colspan=3>-------------------------------------------------------</td> </tr><tr>
<td colspan=3>القاسم Team .</td>
</tr>
</table>
<br/>
</body>
</html>
它应该是这样的:
但是当使用 webBrowser.Print() 打印时,它看起来像这样:
没有良好的Minimal, Reproducible Example和其他调试细节,不可能提供完整的解决方案。
也就是说,您显示的输出显然是文本编码问题。您的 HTML 显示 windows-1252
的编码,一种不包含任何阿拉伯字符的字符编码。因此,即使您显然已经在 HTML 文件中输入了阿拉伯字符,大概使用的编辑器将文件视为支持阿拉伯字符的 UTF8,bytes文件将被呈现为就好像它在 windows-1252
.
的规定编码中一样
本应表示阿拉伯字符的字节将根据 windows-1252
编码进行解释,而不是您期望的阿拉伯字符。因为这就是您告诉 HTML 渲染器要做的事情。
最有可能的是,如果您只是在 HTML 中提供正确的编码名称,它就会起作用。例如:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
另请注意,原始 HTML 中的额外空格不应存在。我在上面的示例中删除了它们。
有关详细信息,请参见例如Declaring character encodings in HTML
我正在尝试使用 WebBrowser.Print() 来打印一个包含阿拉伯字符的 html 文件,问题是阿拉伯字符变成了奇怪的字符
下面是 html 文件代码:
<html>
<head>
<meta http-equiv="Content - Type" content="text / html; charset = windows - 1252" />
</head>
<body>
<table border='0' style='width:300px;color:black;'>
<tr>
<td colspan=3 align = center><b><font size= 4>القاسم</font></b> </td> </tr><tr>
<td colspan=3>-------------------------------------------------------</td> </tr><tr>
<td colspan=2><b>1</b> بابول</td><td align = right>1.00 LBP</td></tr><tr>
<td colspan=2><b>1</b> Biskrem</td><td align = right>3.00 LBP</td></tr><tr>
<td colspan=2><b>1</b> تويكس</td><td align = right>1.00 LBP</td></tr><tr>
<td colspan=3>You Bought 3 Items</td></tr><tr>
<td colspan=3>-------------------------------------------------------</td> </tr><tr>
<td>Subtotal</td> <td colspan=2 align = right>5.00 LBP</td> </tr><tr>
<td>Tax</td> <td colspan=2 align = right>0.00 LBP</td> </tr><tr>
<td colspan=3>-------------------------------------------------------</td> </tr><tr>
<td>Total</td> <td colspan=2 align = right><b>5.00 LBP</b></td> </tr><tr>
<td colspan=3>-------------------------------------------------------</td> </tr><tr>
<td colspan=3>القاسم Team .</td>
</tr>
</table>
<br/>
</body>
</html>
它应该是这样的:
但是当使用 webBrowser.Print() 打印时,它看起来像这样:
没有良好的Minimal, Reproducible Example和其他调试细节,不可能提供完整的解决方案。
也就是说,您显示的输出显然是文本编码问题。您的 HTML 显示 windows-1252
的编码,一种不包含任何阿拉伯字符的字符编码。因此,即使您显然已经在 HTML 文件中输入了阿拉伯字符,大概使用的编辑器将文件视为支持阿拉伯字符的 UTF8,bytes文件将被呈现为就好像它在 windows-1252
.
本应表示阿拉伯字符的字节将根据 windows-1252
编码进行解释,而不是您期望的阿拉伯字符。因为这就是您告诉 HTML 渲染器要做的事情。
最有可能的是,如果您只是在 HTML 中提供正确的编码名称,它就会起作用。例如:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
另请注意,原始 HTML 中的额外空格不应存在。我在上面的示例中删除了它们。
有关详细信息,请参见例如Declaring character encodings in HTML