Linuxでcronを使用していくつかのJavaコードを実行し、数千のレコードを本番データベースに残しました。そのボックスのロケールcharmapは "ANSI_X3.4-1968"でした。今度は、データベースに永続化する前に、次の手順を実行しました。テキスト 2. 1. StringEscapeUtils.unescapeHtml4はUTF-8形式の文字列を書くと今の問題は、これらの手順の後に特殊文字は「?」として表示されている 誤ってエンコードされた文字を復元する(Java)
データベース
に固執します。元の文字に戻すことは可能ですか? 次の手順で問題をシミュレートしました。コードの行
String insertSpecial = StringEscapeUtils.unescapeHtml4("×");
System.out.println(insertSpecial);
String uni = new String(insertSpecial.getBytes(), "UTF-8");// This value is currently in DB
System.out.println(uni);
を以下
- 変更Eclipseのエンコーディング
- "ANSI_X3.4-1968" への書き込みは、今、私は文字列 "UNI" からバック "×" を取得したいです。どんな助けもありがとう。
:あなたは再びその間違いをしないように
は、ここではいくつかの読書です。手動でテストしたところ、エンコーディングは "UTF-8"で、うまくいきました。しかし、デフォルトではcronジョブから実行したときに異なるエンコーディングが使用されることに気づいていませんでした。スクリプトが実行された後、私たちはこの問題を発見し、入力テキストがなくなっても回復できなくなりました。 –
根本的な問題は、エンコーディングの理解ではありませんでした。私は以前と同じように 'new String(insertSpecial.getBytes()、" UTF-8 ");'行を数回見たことがあります。それはうまくいかないので、なぜそれほど多くの人がそれを試していますか? – Kayaman