繁体   English   中英

为什么使用utf-8和Java不能使用法语字符?

[英]Why French characters don't work using utf-8 with 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();
    }
}

我的琴弦被替换了,但法国角色不在那里,取而代之的是�

如果我用ISO_8859_1替换UTF_8,它就可以了。

我认为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 ,然后使用不正确的编码显示(?),将turning转换为Mojibake“�”。

因此,您必须返回发件人/编写者以找出编码是什么。 然后你可以编写一个程序来阅读它。

我认为问题不在于utf-8不能与Java一起使用。 问题是你的文件不是utf-8。 要确认您可以运行"file -I your_file_path" :如果您的输出类似于"your_file_name:text/plain; charset=unknown-'somenumber'bit" ,则表示它不是utf-8。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM