Golang はオープンソースのプログラミング言語であり、その出現により多くのプログラマーに新たな選択肢が与えられました。 MySQL はよく知られたリレーショナル データベース管理システムであり、多くの Golang プログラマーがデータ ストレージ ソリューションとして MySQL を使用しています。ただし、文字セットやその他の側面の違いにより、多くの開発者は Golang が MySQL と対話するときに文字化けの問題に遭遇します。
それでは、Golang が MySQL と対話するときに発生する文字化けの問題を解決するにはどうすればよいでしょうか?考えられる解決策をいくつか紹介します。
1. 文字セットを設定します
MySQL データベースのデフォルトの文字セットは utf8mb4 ですが、Golang のデフォルトの文字セットは utf8 です。双方の文字セットが一致していないと文字化けが発生します。したがって、以下に示すように、MySQL に接続するときに文字セットを utf8mb4 として指定できます。
db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database?charset=utf8mb4")
これにより、Golang と MySQL が同じ文字セットを使用することが保証されます。データベースの作成時に文字セットも utf8mb4 に設定する必要があることに注意してください。
2. utf8mb4 文字セットのデフォルト値を使用する
utf8mb4 文字セットのデフォルト値は、utf8mb4_bin ではなく utf8mb4_general_ci です。テーブルまたはフィールドの作成時に文字セットを指定しない場合、またはデフォルトの文字セットを使用する場合、MySQL はデフォルト値として utf8mb4_general_ci を使用します。 utf8mb4_general_ci は、Unicode 文字セットに基づく比較メソッドであり、大文字と小文字とアクセントを区別しないため、テキスト データを処理する際に便利です。
したがって、テーブルまたはフィールドを作成するときに文字セットを指定せずに、デフォルト値を直接使用することで、文字化けを回避できます。以下に示すように:
CREATE TABLE user ( name varchar(50) NOT NULL, age int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
3. 文字セット変換関数を使用する
異なる文字セットを使用する場合、MySQL が提供する文字セット変換関数を使用して、異なる文字セットのテキストを変換できます。 。その中で、最もよく使用される関数は CONVERT() と CAST() です。
CONVERT(str USING charset)
このうち、str が変換されます。 string、charset はターゲットの文字セットです。
たとえば、utf8 文字セットの文字列を gbk 文字セットの文字列に変換するには、次のステートメントを使用できます。
SELECT CONVERT('你好',CHARACTER SET gbk);
CAST(str AS character_type CHARACTER SET charset)
このうち、str は変換対象の文字列、character_type はターゲットのデータ型、charset は変換対象の文字列です。ターゲットの文字セット。
たとえば、varchar 型 utf8 文字セットのフィールド名を gbk 文字セットのフィールドに変換するには、次のステートメントを使用できます。
SELECT CAST(name AS char(20) CHARACTER SET gb2312) FROM user;
文字セット変換を使用する関数を使用すると、Golang を使用して MySQL と対話する際の文字化けの問題を解決できます。
Golang と MySQL の連携時に発生する文字化け問題を解決する方法としては、上記にいくつか考えられるものがありますが、実際の開発では状況に応じて適切な解決策を選択する必要があります。この記事が Golang プログラマーの文字化け問題の解決に役立つことを願っています。
以上がgolang mysqlの文字化けコードを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。