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

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

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

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

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

5267閲覧

日本語文字コードはどれが最適なのか

aaaaaaaa

総合スコア501

MySQL

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

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2016/01/13 11:37

MYSQLにおける日本語文字コードは、初心者はシフトjis、それ以外はUTF8と書籍(基礎からのmysql/西沢夢路)に書いてありました。
UTF8で作業を行うと困難が発生するのでしょうか。なぜ、シフトjisは初心者に優しいコードなのでしょうか。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

おそらく初心者の環境を想定して、

  • 書籍発売時期の2012年だとWindows XPで作業をしている人が多い(エディタなどはシフトJISが標準で使われている)
  • 文字コードがなんなのかちゃんと把握していないと思われる
  • エディタなどでSQLを編集したとしても、日本語の文字コードまで気を配ることが難しい

というような理由で書籍のサンプルを入力して結果を確認するのみであれば、シフトJISにしておけばトラブルが少ないであろうという判断で書かれたのではないかと思います。

現実問題としては、Webサービスなどでデータベースと連携することを考えると最初からUTF8の方が圧倒的に問題が少ないと思います。

投稿2016/01/13 11:55

編集2016/01/13 16:14
KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

WindowsではシフトJISがデフォルトなので、シフトJISにしたほうが、Windowsを使う初心者が文字コードを意識せずに扱ってもトラブルが比較的少ない、という理由だと思います。
ただKoichiSugiyamaさんが書かれているように、MySQLなどのデータベース連携を行うことを考えると、シフトJISのほうが却って混乱を招くこともある気がします。

Windows以外だと、今どきの環境ならUTF-8が標準なので、最初からUTF-8の方が良いでしょうね。
エディターなんかでもUTF-8がデフォルトのものも多くなってきましたし。

投稿2016/01/13 12:05

argius

総合スコア9390

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

UTF-8で作業を行っても困難は発生しません。最近はどのプロジェクトもだいたいUTF-8なので、それに慣れることをお勧めします。

投稿2016/01/13 12:16

happyhappy

総合スコア346

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

何らかのしがらみ(過去の遺産を利用するなど)がない限り、文字コードの選択はUTF-8にするべきです。現在普及しているOSのほとんどが(もちろんWindowsも)Unicodeを採用しているので、UTF-8でなければ正しく表記できません。
うっかりShift-JISを選んでしまったら、いらぬトラブルを引き起こすだけです。

投稿2016/01/13 12:13

catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

catsforepaw

2016/01/13 13:17

マイナス評価を付けた方。どの辺が間違っているか指摘していただけるとありがたいです。誤った認識は直したいので。
intelf___

2017/01/16 15:05

マイナス評価を付けたわけではありませんが、windows10の最新のものでもShift_JIS(正確に表すならアンダースコア)が標準です。 試しにtypeコマンドを実行してUTF-8のファイルを読もうとすると文字化けします。SJISなら正常に表示されます。 また、空のファイルに標準のメモ帳で書き込むと自動的にSJISが選択されます。 UTF-8への対応は非常に弱いと言ってもいいでしょう。 javaなどの開発でも、windows上では-encoding utf-8のように明示的に指定してやらないとコンパイルエラーになります。 これはjavaなどからMySQLを使うような場合には気をつけないといけない点ですね。
catsforepaw

2017/01/16 15:50

intelf___ さん 回答にも書いたとおり、Windowsのネイティブ文字コードはUnicode(UTF-16)なので、Shift_JISでは正しく表現できません。多言語対応やファイル操作などで支障を来します。特にファイル操作に関しては、場合によってはファイル作成時に使ったファイル名でオープンしようとして失敗するケースも出てきます(NTFSではファイル名がUTF-16で記録されるため)。 > 試しにtypeコマンドを実行してUTF-8のファイルを読もうとすると文字化けします。SJISなら正常に表示されます。 それは、コマンドプロンプト(cmd.exe)のデフォルトのコードページが日本語版WindowsだとShift_JIS(932)に設定されているからです。別の言語のWindowsだと異なるコードページになりますし、言語設定で変更することもできます。 ちなみに、コマンドプロンプトでも`chcp 65001`を実行すると`type`コマンドでUTF-8のテキストが表示できます。 cmd.exeは過去バージョンとの互換性のために残しているのであって、標準(となりつつある)コマンドラインシェルであるPowerShellの文字コードはUnicodeです。回答の意図は、OSやそのバージョン・言語設定などによって挙動が変わるような文字コードは使うべきではないということです。 > また、空のファイルに標準のメモ帳で書き込むと自動的にSJISが選択されます。 それも互換性のためです。マイクロソフトは過去バージョンとの互換性を重視しています。 > javaなどの開発でも、windows上では-encoding utf-8のように明示的に指定してやらないとコンパイルエラーになります。 それはJavaコンパイラーがしょぼいからであってWindowsのせいではありません。Visual StudioではUTF-8を自動認識します。
intelf___

2017/01/17 05:55

> Windowsのネイティブ文字コードはUnicode(UTF-16) こちらの認識が間違っていたようです。勉強になります。 調べたところ、ファイルパスなどもUnicodeみたいですね。 UTF-8とか16とかの違いとか互換性についてはあまり理解できていないですが... > コマンドプロンプトでも`chcp 65001`を実行すると`type`コマンドでUTF-8のテキストが表示できます。 代わりにフォントの設定が必要になり、日本語入力が不可能になり、標準のテキスト(エラーメッセージ等)が英語になり、日本語の表示が途中で切れる(半角として認識されて、文字列全体の半分あたりで切れる)ことが多くなります。 可能ではありますが、実用的とは言えません。 > PowerShellの文字コードはUnicode どういう意味でしょうか。PSのデフォルトのコード・ページは932で、UTF-8ファイルに対してのtypeコマンドでもcmd.exeと同様の文字化けをします。 また、chcp 65001を実行すると日本語入力が出来ないなどcmd.exeと挙動は変わりません。 Get-Content(PS専用)やcat(UNIX系)などのコマンドでも同様でした。 > Visual StudioではUTF-8を自動認識します。 文字コードを自動的に判別するコンパイラは多いですね。 逆に制限させることで開発環境を統一させたり、開発者に意識させるコンパイラもあります。これを一概にしょぼいとは言い難いです。 また、javaは問題が起きそうな例として挙げただけです。あまり気にしないでください。 > OSやそのバージョン・言語設定などによって挙動が変わるような文字コードは使うべきではない 全面的に同意です。むしろSJISが非対応のエディタを開発の普段使いにして、どうしてもSJISで開きたいときは別の対応したエディタを使う位極端でも良いと考えています。 IntelliJなどのIDEならプロジェクト単位で管理できるので、文字コードはあまり意識しないでいいですね。
catsforepaw

2017/01/17 07:42

>> PowerShellの文字コードはUnicode > どういう意味でしょうか。 PowerShellは.NET Frameworkで構築・構成されていて、.NET Frameworkは文字コードにUnicode(UTF-16)を採用しています。PowerShelの文字コードがUnicodeというのはそういうことです。そのため、コンソール出力等を単純にファイルにリダイレクトするとUTF-16になります。テキストファイルを読む際は、UTF-8とUTF-16はBOMで自動認識し、BOMがなければ既定のコードページで読み込もうとします。UTF-8のファイルを表示しようとして文字化けしたとすれば、おそらくBOMが記録されていないのだと思います。
intelf___

2017/01/18 11:45

お手数掛けてすみません 確かにPowerShellでリダイレクトするとUTF-16 with BOMになりました。 UTF-8で出力プログラムを組んで、今までパイプで渡したりリダイレクトすると必ず文字化けしていたのですが、PSでのみBOMをつければ文字化けしないことが分かりました。 cmd.exeのほうは相変わらずですが... 今後活用させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問