标签:utf-8 file-io character html java
我有一个带有法语字符的HTML文件.我需要替换该文件中的一些字符串,所以我执行以下操作:
public static void replaceStringInFile(String filePath, String oldText, String newText)
{
try
{
Path path = Paths.get(filePath);
Charset charset = StandardCharsets.UTF_8;
String content = new String(Files.readAllBytes(path), charset);
content = content.replace(oldText, newText);
Files.write(path, content.getBytes(charset));
}
catch(Exception e)
{
e.printStackTrace();
}
}
我的琴弦已替换,但法语字符不存在,替换为�
如果我将UTF_8替换为ISO_8859_1,则可以正常工作.
我以为UTF_8是通用的?应该使用法语吗?我试图在html文件头中指定utf-8:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="utf-8"/>
....
</style>
我想了解为什么UTF_8不保留我的法语字符…
解决方法:
阅读文本文件之前,您必须先了解其编码.显然,它最初是一个没有元字符集的HTML文件.
您猜到了UTF-8.它不是UTF-8,因为读取它检测到的字节与UTF-8不对应,因此被替换为Unicode替换字符U+FFFD �,然后您使用不正确的编码显示(?),将“变成Mojibake“ ¿½”.
因此,您必须返回发送者/编写者以了解编码是什么.然后,您可以编写一个程序来读取它.
标签:utf-8,file-io,character,html,java 来源: https://codeday.me/bug/20191110/2013624.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。