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

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

新規登録して質問してみよう
ただいま回答率
85.37%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

文字コード

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

Q&A

解決済

2回答

17893閲覧

SQLServer UTF8へ文字コード変換

kaz_y

総合スコア11

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

文字コード

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

0グッド

0クリップ

投稿2022/05/20 23:58

sqlserver2017を使用してます
今、文字コードがshift-jisになっているテーブルがあります
このテーブルを既に登録されているデータを含め
UTF-8へ変換するにはどのような方法がありますか?
ご教授ください

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

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

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

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

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

guest

回答2

0

ベストアンサー

文字コードがshift-jisになっているテーブル

というのは VARCHAR 型の項目の話でしょうか?

VARCHAR型の場合、照合順序の設定に応じて適用される文字コードが異なります。
照合順序が Japanese_CI_AS であれば Shift-JIS となり、
照合順序が Latin1_General_CI_AS であれば Latin-1 となります。

SQL Server 2019 以降であれば照合順序に Japanese_XJIS_140_CI_AS_UTF8 を用いることで UTF-8 として扱えるようですが、残念ながら SQL Server 2017 ではサポートされていない機能のようです。

アプリケーション側のプログラム変更しても構わないのであれば、
テーブルの持ち方としては VARCHARNVARCHAR (UTF-16) に変更して、
アプリケーションで使用する際に、UTF-16 ⇒ UTF-8 にする、という方法は如何でしょうか?

VARCHARNVARCHAR に変更するには ALTER TABLE を用いて以下のようにすれば可能です。

SQL

1ALTER TABLE TableName ALTER COLUMN FieldName NVARCHAR(20)

<参考>
■ SQL Server:文字コードへの理解を深める
https://qiita.com/maaaaaaaa/items/f392e894b8b4bcf7dd5b

■ ALTER TABLE (Transact-SQL)
https://docs.microsoft.com/ja-jp/sql/t-sql/statements/alter-table-transact-sql?view=sql-server-2017

■ SQL Server の UTF-8 サポートのデータストアへの格納と取得について
https://blog.engineer-memo.com/2021/12/31/sql-server-%E3%81%AE-utf-8-%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%B9%E3%83%88%E3%82%A2%E3%81%B8%E3%81%AE%E6%A0%BC%E7%B4%8D%E3%81%A8%E5%8F%96%E5%BE%97%E3%81%AB/

投稿2022/05/21 00:59

cx20

総合スコア4646

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

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

kaz_y

2022/05/21 03:14

ありがとうございます かなり理解が深まりました MySQLへの移行も考えてみます
cx20

2022/05/21 03:56

> MySQLへの移行 特定の1テーブルの話であれば、データベース自体を変更するのは飛躍しすぎな気もします。 単純にUnicode文字を格納したいというのであれば「NVARCHARを使う」でも良さそうな気がしますが・・
guest

0

ひとつの方法として、新しくutf-8用のテーブルを作って、全行selectしてinsertするプログラムを書くというのがありますね。
行数次第ですが。

投稿2022/05/21 00:08

otftrough

総合スコア476

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

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

kaz_y

2022/05/21 00:14

回答ありがとうございます やはりそのままのテーブルで変換するのは無理なんですかね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問