JavaでエクスポートしたCSVが文字化けした場合の解決方法の紹介
1. 問題
クエリされたデータが xls ファイル (UTF-8 エンコーディング) としてエクスポートされる場合、データは正常ですが、 CSV ファイルでは、中国語の文字化けも UTF-8 でエンコードされており、GBK エンコードでエクスポートすると正常に中国語表示されます。
問題は解決したと思ったのですが、後からラテン文字(「ÀÆÊàÌ」など)を含むデータをエクスポートしたところ、xlsファイルでエクスポートすると正常に表示されましたが、CSVファイルでエクスポートすると、ラテン文字が表示されなくなりました。ファイルは「?」と表示されました。
他のエンコード方法に変更しようとしてもうまくいきませんでした。この問題の解決策をオンラインで見つけました。
2. 解決策
CSVモードでエクスポートしたファイルには、デフォルトではBOM情報が含まれていないため、出力する内容にBOM識別子(EF BB BFで始まるバイトストリーム)を設定することで、つまり、この問題は解決できます。具体的な方法は次のとおりです。 (推奨: java ビデオ チュートリアル )
... OutputStreamWriter outputStreamWriter = new OutputStreamWriter(response.getOutputStream(), "UTF-8"); // 要输出的内容 result = (String)contentMap.get(RESPONSE_RESULT); response.setHeader("Content-Disposition", "attachment;filename=test.csv"); outputStreamWriter.write(new String(new byte[]{(byte) 0xEF, (byte) 0xBB, (byte) 0xBF})); outputStreamWriter.write(result); outputStreamWriter.flush();
OutputStream ストリームで実装する場合、パラメータは次のように変更できます。注:
BOM: バイト オーダー マーク、バイト オーダー マーク (以下は百度百科事典から引用)
UCS エンコーディングには、「ゼロ幅ノーブレーク スペース」と呼ばれるものがあります。中国語の翻訳は「ゼロ幅ブレークスペースなし」文字で、エンコードはFEFFです。 FFFE は UCS には存在しない文字ですので、実際の送信では出現しないはずです。
UCS 仕様では、バイト ストリームを送信する前に「Zero width No-Break Space」という文字を送信することが推奨されています。このように、受信機が FEFF を受信した場合、バイト ストリームがビッグ エンディアンであることを示し、FFFE を受信した場合、バイト ストリームがリトル エンディアンであることを示します。したがって、「ゼロ幅ノーブレークスペース」という文字は BOM とも呼ばれます。
UTF-8 ではバイト順序を示すために BOM は必要ありませんが、BOM を使用してエンコード方式を示すことができます。 「ゼロ幅改行スペース」という文字の UTF-8 エンコーディングは EF BB BF です。したがって、受信側が EF BB BF で始まるバイト ストリームを受信すると、それが UTF-8 でエンコードされていることを認識します。 Windows は、BOM を使用してテキスト ファイルのエンコーディングをマークします。
Java についてさらに詳しく知りたい場合は、
Java 基本チュートリアル以上がJavaでエクスポートしたCSVが文字化けした場合の解決方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

setupamaven/gradleprojectwithjax-rsdependencieslikejersey; 2.createarestresourceingnotationssuchas@pathand@get; 3.configuretheapplicationviaapplicationubclassorweb.xml;

Mavenは、Javaプロジェクト管理と建設の標準ツールです。答えは、POM.xmlを使用してプロジェクト構造、依存関係管理、建設ライフサイクルの自動化、プラグイン拡張機能を標準化するという事実にあります。 1. pom.xmlを使用して、GroupID、artifactid、バージョン、依存関係を定義します。 2。MVNCLEAN、コンパイル、テスト、パッケージ、インストール、展開などのマスターコアコマンド。 3.依存関係管理と除外を使用して、依存関係バージョンと競合を管理します。 4.マルチモジュールプロジェクト構造を通じて大規模なアプリケーションを整理し、親POMによって均一に管理されます。 5。

まず、JavaScriptを使用して、ユーザーシステムの設定とローカルに保存されたテーマ設定を取得し、ページテーマを初期化します。 1. HTML構造には、トピックの切り替えをトリガーするボタンが含まれています。 2。CSSの使用:rootは明るいテーマ変数を定義し、.dark-modeクラスは暗いテーマ変数を定義し、これらの変数をvar()を介して適用します。 3. JavaScript検出は、カラーのスchemeを好み、LocalStorageを読み取り、最初のテーマを決定します。 4.ボタンをクリックするときにHTML要素のダークモードクラスを切り替え、現在の状態をLocalStorageに保存します。 5.すべての色の変更には、ユーザーを強化するために0.3秒の移行アニメーションが伴います

はい、一般的なCSSドロップダウンメニューは、JavaScriptなしで純粋なHTMLおよびCSSを介して実装できます。 1.ネストされたULとLIを使用して、メニュー構造を構築します。 2。:Hover Pseudo-Classを使用して、プルダウンコンテンツのディスプレイと非表示を制御します。 3。位置の設定:親liの親relative、およびサブメニューは位置を使用して配置されます:Absolute; 4. submenuは表示されます:なし、それは表示されます:ホバリング時にブロック。 5.マルチレベルのプルダウンは、ネスティングを通じて、移行と組み合わせ、フェードインアニメーションを追加し、メディアクエリを備えたモバイルターミナルに適合させることができます。ソリューション全体はシンプルで、JavaScriptサポートを必要としません。これは大規模に適しています

Javaを使用してハッシュ値を生成するには、Messaged Gigestクラスを通じて実装できます。 1. MD5やSHA-256などの指定されたアルゴリズムのインスタンスを取得します。 2。.update()メソッドを呼び出して、暗号化されるデータを渡します。 3. .digest()メソッドを呼び出して、ハッシュバイト配列を取得します。 4.バイト配列を読み取りのために16進列に変換します。大きなファイルなどの入力については、チャンクで読み取り、.update()を複数回呼び出します。セキュリティを確保するために、MD5またはSHA-1の代わりにSHA-256を使用することをお勧めします。

DateTime.Strtime()を使用して、日付文字列をDateTimeオブジェクトに変換します。 1。基本的な使用法:「2023-10-05」は、「%y-%m-%d」を介したdatetimeオブジェクトとしての解析です。 2。「%m/%d/%y」などの複数の形式をサポートして、アメリカの日付を解析する、「%d/%m/%y」を解析するために英国の日付を解析する、「%b%d、%y%i:%m%p」 3. dateutil.parser.parse()を使用して、不明な形式を自動的に推測します。 4。.dを使用してください

settings.jsonファイルは、ユーザーレベルまたはワークスペースレベルのパスにあり、VSCODE設定のカスタマイズに使用されます。 1。ユーザーレベルのパス:WindowsはC:\ users \\ appdata \ roaming \ code \ user \ settings.json、macos is/users //settings.json、linux is /home/.config/code/user/settings.json; 2。Workspace-Level Path:.vscode/settings Project Root Directoryの設定

エメットプラグインをインストールすると、タグのインテリジェントな自動閉鎖を実現し、略語構文をサポートできます。 2.「auto_match_enabled」を有効にする:sublimeが自動的にシンプルなタグを自動的に完了できるようにする。 3。ALTを使用します。 (Win)またはCtrlシフト。 (Mac)現在のタグを手動で閉じるためのショートカットキー - 日常生活でエメットを使用することをお勧めします。後者の2つの方法を組み合わせることができます。これは効率的で簡単に設定できます。
