ゴミコードは頭痛の種です。この記事では、春のMVCで文字化けされた中国語の問題に対する解決策を紹介します。これは次のとおりです。
1:フォーム送信コントローラーの後の文字化けコードのソリューションが中国のパラメーターを取得します
注:JSPページエンコーディングはUTF-8に設定されています
フォーム送信方法は投稿する必要があります。 GETメソッドの下のスプリングエンコーディングフィルターには何の効果がありません
<%@ page Language = "Java" Import = "Java.util。*" pageEncoding = "utf-8"%> <form action = "$ {ctx}/user/adduser" name = "userform" method = "post">web.xmlを変更し、次のようにエンコードフィルターを追加します(forceencodingパラメーター値をtrueに設定する必要があることに注意してください)
<filter> <filter-name> charatelecodingfilter </filter-name> <filter-class> orgspringframeworkwebfiltarcharacterencodingfilter </filter-class> <init-param> <param-name>エンコード</param-name> <-value> utf-8 </param-> <init-param> <init-param> <init-param> <init-param> <param-name> forceConding </param-name> <param-value> true </param-value> </init-param> </filter> <filter-mapping> <filter-name> charatelecodingfilter </filter-name> <url-pattern/*</url-pattern> </filter-mapping>
注:中国語をエンコードするデータベースは中国語をサポートしていますか
データベーステーブルとテーブルフィールドは正しいですか?
構成接続データベースのパラメーター設定を変更します。
<プロパティ名= "url" value = "jdbc:mysql:// localhost:3306/dbname?useunicode = true&charatereCoding = utf-8"> </property>
最初のケース:
中国語のJSPページを入力し、コントローラーの文字盤コードを入力します。この時点で、設定する必要があるのは、エンコードされたフィルター(フィルター)を追加して、UTF-8にエンコードを統合することです。コードは次のとおりです。
web.xml構成ファイル:
<filter> <filter-name> charatelecodingfilter </filter-name> <filter-class> orgspringframeworkwebfiltarcharecterencodingfilter </filter-class> <init-param> <param-name> encoding </par am-name> <param-value> utf-8 </param-value> </init-param> </filter> <filter-mapping> <filterencodingfilter </filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
ここでは、このコードをWebXMLの開始時に配置するのが最善であることに注意してください。インターセプトの順序があり、背面に配置された場合、ブロックするのは簡単です。
2番目のケース:
データベース中国語のデータ、JSPページは文字化けコードを表示します(厳格な意味では文字化けコードではありませんが、疑問符の形式で表示されます)
フロントエンドとバックエンドの間のデータ相互作用はJSONデータを使用しているため、この状況の理由についてはあまり知りません。私はこれまでに遭遇したことがありません。私はあまりにも少ないプロジェクトをしたことで自分自身を責めることができます、そしてそれを解決することは難しくありません。 JSONを変換するときにエンコード形式を設定する必要があります。コードは次のとおりです。
ResponseSetContentType( "Application/JSON; charset = utf-8"); //データ送信をガルドコードから防止します
この文章を書くと、二度とコードがありません。
3番目の状況:
ページはコントローラーに渡すのも正しいですが、データベースに保存した後、それは文字化けされます(上記のように、厳格な文字化けコードではありません。すべての疑問符があります)
この問題はしばらくの間私を悩ませてきました。データベースのエンコード形式が正しくないと感じ始めました。 UTF-8のエンコード形式でデータベースを再作成することはまだ不可能です。最後に、私はそれがJBossの問題だと感じました。私たちのサーバーはjbossを使用しています。インターネットを検索し、データソースに接続するときにエンコード形式を追加しました。コードは次のとおりです。
<dataSource jta = "true" jndi-name = "java:jboss/datasources/jcmysqlds" pool-name = "jcmysqlds" enabled = "true" use-java-context = "true"> <connection-url> jdbc:mysql:// 46/itoo_basic_basic?useunicode = true&characterencoding = utf-8 </connection-url> <driver> mysql </driver> <pool> <pref Ill> false </prefill> <use-strict-min> false </use-strict-min> <flush-strategy> failingconnectiononly </flush-strategy> </pool> <security> <user-name> root </user-name> <pass <a href = "http:// wwwitnet/edu/ebg/"ターゲット= "_ blank"> word </a>> 123456 </pass <a href = "http:// wwwitnet/edu/ebg/"ターゲット= "_ bland"> word
1。ページ文字化け
ページは比較的簡単に解決でき、多くの場合、対応するJSPページまたはHTMLページに関連する文字セットを設定します。のように
%@ページ言語= "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%
2。値文字化けコードを転送します
値送信プロセス中、文字化けコードも頻繁に表示されます。それがどんなシナリオであるかは言うまでもありません、一般的に使用されるソリューションには、次の構成指定されたフィルターが含まれます
<! - リクエストフィルターを構成し、エンコード形式をUTF-8に設定し、中国語の文字化けを避けます - > <filter> <filter-name> springutf8Encoding </filterwork-crasscherCharCherCherChereCodingFilter </filter-class> <init-name> </param-name> </param-name> <param-value> utf-8 </param-value> </init-param> <init-param> <init-param> <param-name> forceCoding </param-name> <param-value> true </param-value> </init-param> </filter>
リクエスト文字セットを設定します
多くの場合、フロントデスクから対応するコントローラーまたはアクションに渡した後、文字化けコードが表示されます。私の一般的なアイデアは、最初にリクエスト自体のデフォルトの文字セットを印刷することです。
SystemOutPrintln(RequestGetCharActerEncoding());
次に、状況に応じて、必要な文字セットが印刷されていない場合、対応する文字セットを設定します。
requestsetcharacterencoding( "utf-8");
もちろん、一部の状況は解決できない場合があります。以下を使用できます
string str = newstring(requestgetParameter( "BigQuestionTypename"))getBytes( "ISO-8859-1")、 "utf-8")
3.データベースの文字化けコードを保存します
これは比較的複雑です。ここでは、LZはMySQLを使用し、MySQLはこの文字化けの問題を解決する方法を紹介するために使用されます
誰もが知っているように、それが純粋なJDBC、冬眠、またはJPAであろうと、それを下部で使用する方が良いです。実際、それは本質的にJDBCであり、対応するフレームワークは関連ベースでのみカプセル化されています。したがって、どのようなテクノロジーであっても、データベースに接続されたURLを使用します。したがって、URLを最初にチェックする必要があります
URL
標準的な状況は、次のように、対応する状況の後に対応する文字セット設定を追加します
jdbcurl = jdbc:mysql:/// itcastoa?useunicode = true&charaterencoding = utf-8
上記のように、UseUnicodeをデータベースの文字セットに接続する必要があります。これは何ですか?これは、XMLでの問題です。 XMLを使用して、対応するデータベース接続構成を構成する場合、それが問題です。ただし、**プロパティを使用する場合、問題が発生し、アンプを削除する必要があります。これは確かに、血まみれの頭を持つLZの経験です。
データベース
ここでの問題も対処するのが比較的困難です。データベースにログインします
データベースエンコード形式を表示します
<img src = "http:// www2ctocom/uploadfile/collfiles/20150302/png" 7plu ninja htahle ninja:1opentablaug:sun. 1日SQL> "=" ">
サーバーの文字セットがLATIN1であるかどうかを確認できます。ここでは、一般的に使用される文字セットについて話す必要があります。
世界の平和と繁栄のために、ISO組織はユニコード文字セットソリューションを指定しました。 Unicodeエンコーディングは、32ビットのバイナリを含む異なるエンコーディング間の相互コミュニケーションと変換の橋であるため、2のパワーにキャラクターを収容できます。 Unicodeは、さまざまなニーズに応じて3つのソリューションに分割されます。
UTF8:国際的に異なる言語で表示されるコーディングを解決するために使用されます。英語には8桁が使用され、中国語では3桁が使用されます。さらに処理することなくUTF9文字セットをサポートするブラウザに表示できます。
他の2つはUTF16と32で、ここでは編集されません。自分でチェックすることはできますが、それでもストレージの便利さと使用が使用するための使用のためです。
さて、比較的馴染みのあるものは、一般的に国家標準コードとして知られているGBKであり、中国の国家基準によって策定され、漢字のみが含まれています。したがって、2つと比較して、UTF8はより優れた互換性ですが、ストレージ容量が大きくなります。
キャラクターセットを充電する場合、または最初に問題を解決して戻ってきた場合、大まかに戻ってきてください。したがって、ここでGBKまたはUTF8を使用しても構いません。しかし、latin1は間違いなく不可能です、ここでは主にそのようなコマンドによって設定されています
サーバー、データベース、およびデータテーブルパーツは個別に設定されており、接続エンコードを設定する必要があります。接続エンコード設定は次のとおりです。
mysql> set character_set_client = 'gbk'; mysql> set character_set_connection = 'gbk'mysql> set character_set_results =' gbk '
エンコーディングをセットアップすると、中国語を下に正常に挿入できます。実際、1つの文で解決できます。
一般的に使用されるコマンド
データベースエンコード形式を表示します
「Character_set_%」のような変数を表示します。
データベース内のテーブルの作成を表示します
TableNameの作成を表示します。
データベースエンコード形式を設定します
setNames 'gbk';
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。