Java 从web解析日文文本时无法提供正确的字符

Java 从web解析日文文本时无法提供正确的字符,java,html,rest,tomcat,utf-8,Java,Html,Rest,Tomcat,Utf 8,我在Tomcat中运行了一个servlet,它接受表单数据输入 当我输入日语字符时,它们显示为字符串 ベースにチェ 这是正确的,但是当我尝试使用charAt和substring解析字符串时,我得到 ベースにチェ 如果我在Java客户机(swing)中输入相同的输入,chatAt将返回 ベ ー ス に チ ェ 所以,有些地方出了问题,但我不太懂utf-8或unico

我在Tomcat中运行了一个servlet,它接受表单数据输入

当我输入日语字符时,它们显示为字符串

ベースにチェ

这是正确的,但是当我尝试使用charAt和substring解析字符串时,我得到

ベースにチェ
如果我在Java客户机(swing)中输入相同的输入,chatAt将返回

ベ ー ス に チ ェ

所以,有些地方出了问题,但我不太懂utf-8或unicode,所以我不知道如何修复它

html页面基本上是

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<form action="ChatServlet" method="post">
<input type="text" name="input">
<input type="submit" name="Submit" value="Submit">
下一步=='&'not'ベ'

但在swing next=='ベ'


我想要'ベ', 不是“&”

好的,最后回到这个问题上,并解决了它。有几个问题,, 这里是细节,希望这能为其他人省去我弄明白这件事的乐趣

步骤1-确保将html/jsp页面设置为UTF-8 对于POST来说,这将使它工作,但get仍然不工作

第4步-在Tomcat server.config中设置URI编码 如果不使用字符集将流包装到读取器中,它将无法工作


希望这对其他人有帮助。

字符
ベースにチェ对应于
ベースにチェ。出于某种原因,你只看到中间的三个字符。但是,Unicode值是正确的。如果没有看到一些代码/配置,这可能有点难以解决。您说过您在Tomcat中有一个servlet,但是您到底使用了什么来创建表单呢?它如何准确地将字符串传递给服务器?“字符显示为字符串”是什么意思?它们在哪里显示?在控制台里?等等;-)尝试将
accept charset=“utf-8”
添加到
tag@squeamishossifrage是正确的:浏览器不知道它可以发回UTF-8,而一些浏览器随后会创建一个高Unicode字符,比如数字HTML实体
&(ASCII表示)。还可以在服务器的内部设置可接受的编码。
String input = (String)request.getParameter("input");
char next = input.charAt(0);
<head>
    <meta charset="UTF-8">
</head>
<%@ page contentType="text/html; charset=UTF-8" %>
request.setCharacterEncoding("utf-8");
<Connector port="80" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="9443"
    URIEncoding="UTF-8"/>
Reader reader = new InputStreamReader(get.openStream(), "UTF-8");