このWebアプリケーションをJBossでJBossApplicationServerで実行しています。フレンドリURLにサーブレットを使用しています。JSPとサーブレットを介して検索パラメータを送信しています。テキストボックス付きのフォーム、サーブレットを使用しています
最初のサーブレットはrequest.getParameter()
テキストを取得するために使用し、それを別のサーブレットに送信しresponse.sendRedirect
ます(URLを「わかりやすい」ものにマスクします)。この最後のサーブレットはrequest.getRequestDispatcher().forward()
、「醜い」方法でパラメータをJSPに送信するために使用しますsearchResults.jsp?searchParameters=Parameters
。
これで、[検索結果]ページが表示されると、URLに「わかりやすいURL」を含む正しい検索語が表示されます。例:次http://site.com/search/My-Search-Query
のような特殊文字を使用する場合でも:http://site.com/search/Busqué-tildes-y-eñies
。しかし、JSPでその検索語を使用しようとすると、特殊文字が正しく表示されません。
システム全体でi18nを使用しており、これまでのところ特殊文字に問題はありません。ただし、情報がフォームを介して送信される場合(たとえば、index.jspからsearchResults.jspに)、特殊文字は正しく表示されません。
á - á
é - é
í - Ã
ó - ó
ú - ú
ñ - ñ
コードベース全体がUTF-8であると想定されていますが、パラメーターを渡すときに何かが欠落しているようです。私が言ったように、それらはURLに正しく表示されますが、JSP内には表示されません。
それらを手動で変換することを考えá
ていましたが、正しいエンコーディングを使用して、正しく変換するためのより良い方法があると思います。その上、私が今気づいていないかもしれない新しいキャラクターが後であるかもしれません(フランス語、スペイン語など)
念のため、各JSPに次の行があることをお知らせします。
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
編集
回答ありがとうございます。私はいくつかのことを試しましたが、何も問題を解決していません。
これが私がしたことです:
セッションの文字エンコードをUTF-8に設定するServletRequestListenerと、同じことを行うすべてのHttpリクエストのフィルターを追加しました。
私が言ったように、JSPのすべてはUTF-8でエンコードされています(問題のヘッダーを参照)。
サーブレットの文字エンコードをコンソールに出力しましたが、デフォルトではnullであり、@kgiannakakisや@sauaが言ったようにUTF-8に設定しました。
これらのアクションのいずれも問題を修正しません。これに何か問題があるのだろうか...