質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

受付中

(Java) 日本語を入力すると文字化け【SpringBoot + Thymeleaf +MySQL +cloudfoundry】

osatsu
osatsu

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

1回答

0評価

1クリップ

13094閲覧

投稿2017/11/10 12:26

編集2022/01/12 10:55

###前提・実現したいこと
SpringBoot + ThymeleafでWebアプリを開発中です。
機能としては
ブラウザに入力フォームを配置し
入力された値をDBに登録、そして
登録されたデータ達をブラウザ上で一覧表示させるというものです。

以下のような流れです。
・STSで開発したコード類を実行可能JARとしてビルドし、これをcloudfoundry(Pivotal)にデプロイ
・cloudfoundryではcleardbのサービス(MySQL)を利用。
・デプロイしたアプリとDBサービスをバインドし、アプリを起動
・無事に起動に成功したが、日本語データを入力・登録しようとすると全ての日本語(全角文字)データが「?」に置き換えられ、文字化けが発生

ちなみに文字化けしたのはフォーム入力を経由しているものだけで、
HTMLに直接打ち込んだ日本語や、
thymeleafの変数式に直接代入(フォーム入力値ではなく、事前にコードに書いておいた固定の文字列)した文字列(日本語)は
文字化けしていません。
現在文字化け解消に向けて試行錯誤中です。

###発生している問題・エラーメッセージ

同じアプリをローカル環境(ローカルのMySQL)で起動した所、 日本語データも問題なく登録・表示されました(読み込んでいるpropertiesファイルはapprication.propertiesです)。 また、cleardbのサービスインスタンスに対して ローカルと同じようにコマンドプロンプトからアクセスし、 以下の事を試しました。 手入力で日本語のデータを登録し、これをデプロイしたアプリ上から確認。 このデータは文字化けせずに日本語のまま表示されていました。 したがって、入力フォームに記入した値をDBに引き渡す過程で何か問題がある可能性があると考えています。 それがthymeleafの変数式によるものなのか、リポジトリによるものなのか分かりません。 文字化けに関して自分なりに色々調べ試してみましたが未だに解消には至っておりません。 ちなみに、 コマンドプロンプトにて確認したcleardbのMySQL文字コードは以下の通りです。 ローカル環境と違って設定ファイルをいじって文字コードを変える事ができなさそうなので悩んでいます。 +--------------------------+------------------------------+ | Variable_name | Value | +--------------------------+------------------------------+ | character_set_client | cp932 | | character_set_connection | cp932 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | cp932 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql56/charsets/ | +--------------------------+------------------------------+ また、参考までにローカルDBの文字コードは以下の通りです。 +--------------------------+---------------------------------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ | +--------------------------+---------------------------------------------------------+

###該当のソースコード

Java

#以下の内容はapprication-cloud.propertiesのもの。 #springboot1.4からspring.datasource.connectionPropertiesは使えなくなった模様。 #代わりに↓を記述。 spring.datasource.tomcat.connection-properties=useUnicode=true;characterEncoding=UTF-8; spring.datasource.tomcat.driver-class-name=com.mysql.cj.jdbc.Driver #datasource系 spring.datasource.sql-script-encoding=UTF-8 #thymeleafの設定 spring.thymeleaf.encoding=UTF-8 spring.thymeleaf.mode: HTML #EMBEDDED(埋め込み)tomcatの設定? server.tomcat.uri-encoding=UTF-8 #これがCharacterEncodingFilterに相当する設定? spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true spring.http.encoding.force=true

###試したこと
各ファイルのtext file encoding の確認(UTF-8)
application-cloud.properties内での設定の見直し(上記参照)

###補足情報(言語/FW/ツール等のバージョンなど)
[OS]
win10

[開発言語]
Java

[開発環境]
STS3.9.0.
SpringBoot1.5.7.
Thymeleaf3.0.2.

[デプロイ先]
PivotalCloudFoundry(Pivotal Web Services)
[使用DB]
Cleardb MySQL(CloudFoundryのサービスインスタンス)

###追記
clearDBのMySQLサービスインスタンス内の文字コード
(win10コマンドプロンプト経由で確認。)

【データベースの文字コード】
mysql> show create database データベース名 ;
+--------------------+-----------------------------------------------------------------------------+
| Database | Create Database |
+--------------------+-----------------------------------------------------------------------------+
| データベース名 | CREATE DATABASE データベース名 /*!40100 DEFAULT CHARACTER SET utf8 */ |
+--------------------+-----------------------------------------------------------------------------+
1 row in set (0.19 sec)

【テーブルの文字コード】
mysql> show create table テーブル名;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| テーブル名 | CREATE TABLE テーブル名 (カラム定義) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.17 sec)

【ビューの文字コード】
mysql> show create view ビュー名;
+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| View | Create View | character_set_client | collation_connection |
+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| ビュー名 | ビューの生成規則 | utf8 | utf8_general_ci |
+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
1 row in set (0.20 sec)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。