お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2011-11-13 11:17:47

Akira Imakura
メンバ
From: 徳島
登録日: 2007-11-17

MySQLでの漢字検索について

ubuntu10.04上でMySQLを使っています。漢字の検索が十分にできないことがあり、質問します。次のようにテーブル Shiken をつくり、漢字一字だけ、入力し検索します。
DROP TABLE Shiken;

CREATE TABLE Shiken(
kanji VARCHAR(20),
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY);

INSERT INTO Shiken(kanji) VALUES("蚊");
INSERT INTO Shiken(kanji) VALUES("隊");
INSERT INTO Shiken(kanji) VALUES("渦");
INSERT INTO Shiken(kanji) VALUES("並");
INSERT INTO Shiken(kanji) VALUES("靴");
INSERT INTO Shiken(kanji) VALUES("蝴");
INSERT INTO Shiken(kanji) VALUES("人");
INSERT INTO Shiken(kanji) VALUES("溺");
INSERT INTO Shiken(kanji) VALUES("騎");
INSERT INTO Shiken(kanji) VALUES("討");

SELECT * FROM Shiken WHERE kanji="蚊"; とすると、蚊と隊の二つを選択してしまいます。
SELECT * FROM Shiken WHERE kanji="隊"; としても、蚊と隊の二つを選択します。
SELECT * FROM Shiken WHERE kanji="渦"; とすると、渦と並の二つを選択してしまいます。
SELECT * FROM Shiken WHERE kanji="並"; としても、渦と並の二つを選択します。
SELECT * FROM Shiken WHERE kanji="靴"; とすると、靴と蝴の二つを選択してしまいます。
SELECT * FROM Shiken WHERE kanji="蝴"; としても、靴と蝴の二つを選択します。
SELECT * FROM Shiken WHERE kanji="人"; とすると、人と溺の二つを選択してしまいます。
SELECT * FROM Shiken WHERE kanji="溺"; としても、人と溺の二つを選択します。
SELECT * FROM Shiken WHERE kanji="騎"; とすると、騎と討の二つを選択してしまいます。
SELECT * FROM Shiken WHERE kanji="討"; としても、騎と討の二つを選択します。

蚊と隊、渦と並、靴と蝴、人と溺、騎と討 の区別ができていません。どうしてでしょうか。

オフライン

 

#2 2011-11-13 11:35:48

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: MySQLでの漢字検索について

MySQLサーバ、クライアント等の文字コード環境を明記してください。

オフライン

 

#3 2011-11-13 12:00:50

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: MySQLでの漢字検索について

追記
ちなみに、UTF-8 での文字コードは
蚊 e8 9a 8a
隊 e9 9a 8a
です。
確認は、$ echo "蚊"|hexdump -C
00000000  e8 9a 8a 0a                                       |....|
00000004
で行いました。(0a は、ラインフィード(LF 改行)コード)

オフライン

 

#4 2011-11-14 04:12:31

Akira Imakura
メンバ
From: 徳島
登録日: 2007-11-17

Re: MySQLでの漢字検索について

show variables like 'character_set%';
を実行しますと、

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

と表示されます。

オフライン

 

#5 2011-11-14 12:03:56

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: MySQLでの漢字検索について

実は、私も、mysqlに関しては、全くの素人なので、よくわかりませんが、
下記を参照して、デフォルト文字をUTF8へ変更したり、テーブル、db 個別にUTF8を指定したりして、確認してみてください。
(VARCHAR は、指定文字セットによってサイズが変わるので...)
http://www.atmarkit.co.jp/flinux/rensai/mysql5_04/mysql5_04b.html
http://d.hatena.ne.jp/shimonoakio/20080129/1201609465
http://www.yukun.info/blog/2008/10/mysql-login-user-create-database.html

オフライン

 

#6 2011-11-14 21:51:04

Akira Imakura
メンバ
From: 徳島
登録日: 2007-11-17

Re: MySQLでの漢字検索について

文字コードを変えるのは、文字化けなどの重大な事態がある時にすることと理解しています。この場合は、単に漢字一つの検索に、漢字が2つ表示されるだけで、他は問題なく動いています。検索は漢字ひとつだけですることはまれなため、ほとんどの検索は現在の状態で問題なくできます。この程度のことで/etc/mysql/my.cnf を書き換えたりすると、予期しない重大なことが起こる懸念があり、躊躇されます。
/etc/mysql/my.cnf を書き換えずに、文字コードを書き換える方法をインターネットで探してみました。
create databaase xxxdb default character set utf8; で 文字コードを指定してデータベースを作ることができる。(http://ext.omo3.com/linux/mysql_character_set.html)
create databaase Kokoromi default character set utf8;
で試してみると、
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'databaase Kokoromi default character set utf8' at line 1
と表示され、できません。
set names utf8; で 既存のデータベースの文字コードを変更することができる。(http://ref.layer8.sh/ja/entry/show/id/15)
create database Kokoromi; で
show variables like 'character_set%'; を入力すると、
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
と表示されます。
set names utf8; を実行して、
show variables like 'character_set%'; を入力すると、
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
と表示されます。確かに文字コードが変わっています。
DROP TABLE Shiken;

CREATE TABLE Shiken(
kanji VARCHAR(20),
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY);

INSERT INTO Shiken(kanji) VALUES("蚊");
INSERT INTO Shiken(kanji) VALUES("隊");
INSERT INTO Shiken(kanji) VALUES("渦");
INSERT INTO Shiken(kanji) VALUES("並");
INSERT INTO Shiken(kanji) VALUES("靴");
INSERT INTO Shiken(kanji) VALUES("蝴");
INSERT INTO Shiken(kanji) VALUES("人");
INSERT INTO Shiken(kanji) VALUES("溺");
INSERT INTO Shiken(kanji) VALUES("騎");
INSERT INTO Shiken(kanji) VALUES("討");

を実行し、テーブルをつくり、データを入れます。
SELECT * FROM Shiken WHERE kanji="蚊"; とすると
ERROR 1267 (HY000): Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
と表示され、まったく検索ができません。

今の所よい結果はまったく得られていません。

MySQL を使っている皆さんの環境では、どうなのかお聞きしたいです。
CREATE TABLE Shiken(
kanji VARCHAR(20),
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY);

INSERT INTO Shiken(kanji) VALUES("蚊");
INSERT INTO Shiken(kanji) VALUES("隊");
INSERT INTO Shiken(kanji) VALUES("渦");
INSERT INTO Shiken(kanji) VALUES("並");
INSERT INTO Shiken(kanji) VALUES("靴");
INSERT INTO Shiken(kanji) VALUES("蝴");
INSERT INTO Shiken(kanji) VALUES("人");
INSERT INTO Shiken(kanji) VALUES("溺");
INSERT INTO Shiken(kanji) VALUES("騎");
INSERT INTO Shiken(kanji) VALUES("討");

SELECT * FROM Shiken WHERE kanji="蚊";
SELECT * FROM Shiken WHERE kanji="渦";

でちゃんと、蚊、渦 だけを選択するでしょうか。

オフライン

 

#7 2011-11-15 09:08:52

weyk
メンバ
登録日: 2009-04-03

Re: MySQLでの漢字検索について

 まず、登録しようとしている文字を含んでいるキャラクターセット(とキャラクターエンコード)を、選択して、データベースとテーブルを作成してください。
 これができていないと、(クライアント側等)他でいくらやっても、小手先のごまかしでしかありません。set namesは、あくまでもクライアント側の設定の切替であって、「この文字コードでSQL文を依頼するから、この文字コードで返してくれ」という指定です。データベースには、データベースの文字コード(character_set_database   | latin1)でその文字コードに存在する文字が格納されている必要が有ります。

 現在、データベースに指定していて、おそらくはテーブルも同じ設定で作成されている、latin1には、日本語は入りません。クライアントもlatin1を設定することで、バイナリスルーにできることが多く、「ちゃんと表示できたから正しいんだ」と勘違いしてしまうことが有りますが、些細な原因で破綻します(文字単位で認識して無いのと、クライアント側のエンコードを使用する言語にあわせて変更させることが出来ません)

データベースを作り直すことをお勧めします。まずは、今の失敗してしまったデータベースはおいといて、utf8でデータベースを作成して「正しい設定のときの動作」を試してみると良いかと思います。

オフライン

 

#8 2011-11-16 02:09:30

Akira Imakura
メンバ
From: 徳島
登録日: 2007-11-17

Re: MySQLでの漢字検索について

weykさん、納得のいく説明ありがとうございました。
私は前回 create databaase Kokoromi default character set utf8; でエラーになると書きましたが、単にdatabaase の綴り間違いでした。create database Kokoromi default character set utf8; と入力すると、エラーになりません。
これで、データベースをつくり、
use Kokoromi;
show variables like 'character_set%'; を入力すると
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
と表示され、character_set_database は utf8 になっています。
次に
set names utf8;     を入力してから、
show variables like 'character_set%'; を入力すると、
+--------------------------+----------------------------+
| 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     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
と表示され、character_set_client も utf8 になっています。
ここで、
CREATE TABLE Shiken(
kanji VARCHAR(20),
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY);

INSERT INTO Shiken(kanji) VALUES("蚊");
INSERT INTO Shiken(kanji) VALUES("隊");
INSERT INTO Shiken(kanji) VALUES("渦");
INSERT INTO Shiken(kanji) VALUES("並");
INSERT INTO Shiken(kanji) VALUES("靴");
INSERT INTO Shiken(kanji) VALUES("蝴");
INSERT INTO Shiken(kanji) VALUES("人");
INSERT INTO Shiken(kanji) VALUES("溺");
INSERT INTO Shiken(kanji) VALUES("騎");
INSERT INTO Shiken(kanji) VALUES("討");
を入力して、Shikenテーブルをつくり、データを入力します。
SELECT * FROM Shiken WHERE kanji="蚊";
SELECT * FROM Shiken WHERE kanji="隊";
SELECT * FROM Shiken WHERE kanji="渦";
SELECT * FROM Shiken WHERE kanji="並";
SELECT * FROM Shiken WHERE kanji="靴";
SELECT * FROM Shiken WHERE kanji="蝴";
SELECT * FROM Shiken WHERE kanji="人";
SELECT * FROM Shiken WHERE kanji="溺";
SELECT * FROM Shiken WHERE kanji="騎";
SELECT * FROM Shiken WHERE kanji="討";
を入力すると、確かに一字だけ選択されます。

show create table Shiken \G と入力すると、
*************************** 1. row ***************************
       Table: Shiken
Create Table: CREATE TABLE `Shiken` (
  `kanji` varchar(20) DEFAULT NULL,
  `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

ERROR:
No query specified

と表示され、テーブルの文字コードも utf8 になっています。

一度端末を閉じて、もう一度SQLコマンド画面にして、
use Kokoromi;
SELECT * FROM Shiken WHERE kanji="騎";  としても、

Empty set (0.02 sec)
と表示されます。
set names utf8; を入力してから、
SELECT * FROM Shiken WHERE kanji="騎";  を入力すると、始めて、
+-------+----+
| kanji | id |
+-------+----+
| 騎   |  9 |
+-------+----+
1 row in set (0.00 sec)

と表示されます。
utf8のデータベース、テーブルをつくると、データベースに問い合わせる時はいつも、set names utf8; を書くことが必要なようです。
これをなくすには、/etc/mysql/my.cnf を開き、[client] と [mysqld] の所に
[client]
default-character-set=utf8

[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8

と書き込むことが必要なのでしょうか。(http://ext.omo3.com/linux/mysql_character_set.html)
ただ書き換えてしまうと、latin1 でつくったデータベース、テーブルは動かなくなると思われますが、どうなのでしょうか。

オフライン

 

#9 2011-11-16 10:49:28

weyk
メンバ
登録日: 2009-04-03

Re: MySQLでの漢字検索について

 どのように設定を行なう必要が有るのかについては、以下のサイトがわかりやすいようです。
http://www.klab.jp/media/mysql/index6.html
(データベースやテーブルやカラムのキャラクターセットの属性は、それぞれCREATEやMODIFYしたときの値が属性として保持されますから、設定ファイルなどによって変わってしまうことは有りません。latin1の属性を持つカラムは、my.cfmをどう変ええても、latin1のテキストデータが入っているものとして扱われます)

 また、すでにlatin1で作成してしまっているデーターベースについては、リファレンスマニュアルの以下のページを参考にして、変換するのが良いと思います。
http://dev.mysql.com/doc/refman/5.1/ja/charset-database.html
(「そのまま」にした場合、上記の「エンコードに関する正しい設定」を行なうことができず、無理やりlatin1にあわせてごまかすことになるかと思います。)

なお、キャラクターセットの指定方法にまつわる脆弱性に関する情報もちらほら見かけますので、あわせて調べておくと良さそうです(先のサイトにも少し書かれています)

オフライン

 

#10 2011-11-18 07:46:16

Akira Imakura
メンバ
From: 徳島
登録日: 2007-11-17

Re: MySQLでの漢字検索について

create database Kokoromi default character set utf8;
use Kokoromi;
set names utf8;
show variables like 'character_set%';
では、
+--------------------------+----------------------------+
| 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     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
と表示され、character_set_server にlatin1 が残ります。character_set_serverはlain1でよいものでしょうか。

オフライン

 

#11 2011-11-18 10:23:35

weyk
メンバ
登録日: 2009-04-03

Re: MySQLでの漢字検索について

 カラム→テーブル→データベース→サーバの順の優先順位があり、未設定(デフォルト)の場合に優先順位の低いものを参照するようです。
※それぞれ、キャラクターセットを指定してCREATEした場合はそのCREATE時に記憶されるようなのですが、デフォルト(未設定)の場合にどうなるのか読みきれませんでした(CREATE時?ランタイム?)

 そのため、データベースを作成する際にキャラクターセットを指定してあれば、サーバのキャラクターセットの設定は問題ないと思います。

 なお、サーバのキャラクターセットを変えたい場合は、mysqldを起動する際の引数に指定するか、mydqldをmakeする際(cofigureするとき)に指定しておく必要があるようです(myslqのマニュアルによると)

オフライン

 

#12 2011-11-19 07:42:42

ry
メンバ
登録日: 2008-07-30

Re: MySQLでの漢字検索について

サーバのキャラクターセットを変えたい場合

my.cnf の mysqld セクションの default-character-set で指定するのが普通です
my.cnf で指定したくないときには make し直す必要があります <どんな状況でその必要性が生じるのかは皆目見当もつかないが
mysqld を起動する際の引数で指定するのは、評価のために一時的に設定を変えたいときだと思います
評価が終われば、その結果を受けて my.cnf を正しく設定します (人によっては起動スクリプトに引数を記述することがあるかもしれない)


character_set_server にlatin1 が残ります。character_set_serverはlain1でよいものでしょうか

データベースを作成 (create database) するときに、毎回明示的に文字コードを指定するか、作成したデータベースに格納する文字が英数字 (laten1) だけというのならそれでもいいでしょう

オフライン

 

#13 2011-11-22 07:31:53

Akira Imakura
メンバ
From: 徳島
登録日: 2007-11-17

Re: MySQLでの漢字検索について

文字コードlatin1でつくってしまったデータベースとテーブルから、文字コードutf8に置き換える作業を行いました。いくらかトラブルがありましたが、今の所正常に動いています。次のような方法を用いました。
現在のデータベースとテーブルの状態を次のようであるとします。

CREATE DATABASE Kokoromi;

use Kokoromi;

CREATE TABLE Shiken(
kanji VARCHAR(20),
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY);

INSERT INTO Shiken(kanji) VALUES("蚊");
INSERT INTO Shiken(kanji) VALUES("隊");
INSERT INTO Shiken(kanji) VALUES("渦");
INSERT INTO Shiken(kanji) VALUES("並");
INSERT INTO Shiken(kanji) VALUES("靴");
INSERT INTO Shiken(kanji) VALUES("蝴");
INSERT INTO Shiken(kanji) VALUES("人");
INSERT INTO Shiken(kanji) VALUES("溺");
INSERT INTO Shiken(kanji) VALUES("騎");
INSERT INTO Shiken(kanji) VALUES("討");

show variables like 'character_set%';
で、
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
と表示されます。

データベースKokoromiの文字コードを変えるのは、何かトラブルがあった時に危険と考え、文字コードutf8のデータベースを新しくつくり、そこに、データベースKokoromiのデータをすべて、移すことにしました。もし万が一うまくいかなければ、元のデータベースを使えばよいわけです。

create databaase W_Kokoromi default character set utf8;

use W_Kokoromi;

set names utf8;

CREATE TABLE Shiken(
kanji VARCHAR(20),
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY);

show variables like 'character_set%';
で、
+--------------------------+----------------------------+
| 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     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
と表示されます。

show create table Shiken \G;
で、
*************************** 1. row ***************************
       Table: Shiken
Create Table: CREATE TABLE `Shiken` (
  `kanji` varchar(20) DEFAULT NULL,
  `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
と表示されます。

次にデータを移しました。

use Kokoromi;

SELECT * FROM Shiken INTO OUTFILE '/tmp/Shiken.txt';

use W_Kokoromi;

LOAD DATA LOCAL INFILE '/tmp/Shiken.txt' INTO TABLE Shiken;

これで、文字コードutf8のデータベースW_Kokoromiにある文字コードutf8のテーブルShikenにデータを移すことができました。

次に /etc/mysql/my.cnf を変更しました。

sudo cp /etc/mysql/my.cnf /etc/mysql/my_copy.cnf

でコピーをとってから、

sudo gedit /etc/mysql/my.cnf
で、/etc/mysql/my.cnf を開き、
[client]
の項目の所に
default-character-set=utf8
を書き加え、
[mysqld]
の項目の所に
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
を書き加えました。

パソコンを再起動し、MySQLコマンド画面を開き、
show variables like 'character_set%'; 
で、
+--------------------------+----------------------------+
| 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       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
と表示されます。
/etc/mysql/my.cnf にcharacter-set-server = utf8 を書き加えたため、character_set_serverもutf8になっています。

トラブルとしては、次のようなことがありました。
例の場合はテーブルが一つですから、簡単ですが、実際のデータベースはテーブルの数がかなりあります。そのテーブル一つごとに CREATE TABLE のSQL文をつくるのは、かなりの手間でした。これが一番時間がかかりました。
今使っていないテーブルやプログラムの中でつくるテーブルは移す必要がないと考え、移さなかったのですが、drop table の中で、不要と思ったテーブル名が入っているのがあり、テーブルがないためプログラムが止まってしまうことが起こりました。
mysqldumpで一つのパソコンから他のパソコンにデータを移すことができないことが起こりました。mysqldumpが使えないのかと考えあぐんでいた所、一つのパソコンの設定が、古いデータベースを指定したままで、新しいデータベースを指定をしたつもりが、していなかったことがわかりました。

,ひとつ、'ひとつ忘れても、動かないのが、プログラムの世界であり、プログラムは人間で言えば非常に頭の固い、融通のきかない人間です。しかし動かないという大きな問題が起こるからこそ、誤りに気づきやすいとも言えます。今回のように、文字コードを変更をしていないという大きな誤りがあっても、ほとんど問題なく動いてしまうと、誤りに気づきにくくなります。融通がききすぎる人間も問題のようです。

オフライン

 

Board footer

Powered by FluxBB