私はここ数日間 UTF-8 エンコーディングについて勉強していましたが、非常に混乱しているので、自分の意見についてお話します。承認を歓迎します。以下は私の考えです。何か間違っている場合は、遠慮なくご指摘ください。
関連する余談:
1. オペレーティングシステム
ウィンドウ システムは内部的にはすべて Unicode です。フォルダー名、ファイル名などはすべてUnicodeであり、どの言語体系でも正常に表示できます。
2.入力方法:
Microsoft Pinyin 出力は Unicode で、Smart ABC 出力は簡体字中国語です (そのため、Smart ABC は非簡体字中国語システムではまったく使用できず、英語でのみ入力できます)。
3.Webページのテキストエリア
WebページのテキストエリアはUnicodeで表示されます。したがって、そこに入力したものはすべて表示されます。ただし、Flash で作成された一部の入力ボックスは機能しません。
4.アクセス2000
Access で保存されるデータは Unicode であり、どの言語体系でも表示できます。
データ ビューで表示したときに一部の文字が正常でない場合は、表示に使用されているフォントが Unicode フォントではないことが原因です。
すべてを表示するには、Arial Unicode MS フォントに変更します。 (ヘルプにアクセス、検索、Unicode を入力、手順が利用可能)
5. 言葉
Word での繁体字中国語と簡体字中国語の変換 簡体字中国語から繁体字中国語に変換しても、実際には内部コードは簡体字中国語のままです。
6. ASP は内部的に Unicode であり、すべてのテキストは Unicode で保存されます。必要に応じて、指定した文字セットに変換します。
まず結論を導き出しましょう:
<%@ codepage=936%>簡体字中国語
<%@ codepage=950%>繁体字中国語
<%@ codepage=65001%>UTF-8
コードページは、IIS が渡された文字列 (フォームの送信、アドレス バーの送信など) を読み取るエンコーディングを指定します。
すべてのテキスト変数が Unicode から変換されるエンコーディングも指定します。
また、データベースから取得したデータを Unicode から変換するエンコーディングも指定します。 (これは非常に重要なので注意してください。)
キーワード:
読み方: 文字列。簡体字中国語で読み取られた場合はいくつかの文字になり、繁体字中国語で読み取られた場合はいくつかの文字になります。文字列自体のエンコードは変更されていません。
変換: システムは、たとえば Unicode の「化」文字を Big5 の「化」文字に積極的に変換し、内部コードは Big5 のコードになります。 Big5 に対応する単語がない場合は、Unicode 形式が保持されます (&#xxxx;)
簡体字中国語: 6 つの結論
Unicode 16 進形式: 6 つの結論
Unicode 10 進形式: 6 つの結論
私が推測したエンコード変換プロセスは次のとおりです。
クライアント: 入力メソッド Unicode -- 入力ボックス unicode -- charset () によって Unicode から対応するエンコーディングに変換 -- フォーム送信エンコーディング
サーバー側: IIS はフォームをデコードします -- コードページで指定されたエンコーディングに従って読み取ります -- 対応する Unicode に変換します -- request("") で読み取ることができます -- いくつかの処理を実行します -- Unicode エンコーディングでデータベースに保存します
サーバー側: データベースから Unicode データを読み取り、コードページで指定されたエンコーディングに変換します --- ソース コードを生成します -- IE はそれを読み取って、文字セットに従って表示します。
以下にいくつかの例を示します。
例 1:
典型的なメッセージ ページである 3 つの ASP ページがあると仮定します。
1.write.asp は単純な入力フォームであり、add.asp に送信されます。
<META http-equiv="Content-Type" content="text/html; charset=big5">
2.add.asp はメッセージを受信し、データベースに保存します。
<%@ codepage=936%>
3.read.asp はデータベースからメッセージを取得して表示します。
<%@ codepage=936%> charset=GB2312 または
<%@ codepage=950%> charset=big5
推測していただいても構いませんが、Microsoft のピンイン入力メソッドを使用して、write.asp に「Hua Liu Discussion」と入力しました。 read.asp には最終的に何が表示されるのでしょうか?
めまいがしますか?最初から分析してみましょう。
例 2:
例 1 の add.asp の <%@ codepage=936%> を <%@ codepage=950%> に変更するとどうなりますか?
ここで何を見つけましたか?
1.入力テキストが対応する文字セットと異なる場合、変換後に Unicode 形式の文字が表示されることがあります。その理由は次のとおりです。今後、プロセス全体が保持されます。
2. Add.asp のコードページによって、データベースに保存されるテキストと、どの言語が Unicode に対応するかが決まります (例: codepage=936)。
次に、データベースは簡体字中国語 Unicode を保存します (データベースは簡体字中国語システムに戻り、すべてが正常です)。
Codepage=950 は繁体字中国語の Unicode を保存します (簡体字中国語システムを取り戻すのは間違いです)。
3.文字列の変更プロセスに注目してください。
1) 入力方法 --- CharsetUnicode ---- 文字セットのマッピングを指定します
2)Charset----フォームエンコード文字列の単純なエンコード
3) フォームデコードの前のステップの逆のプロセスで、2 つのステップがオフセットされます。
4) 文字列→コードページを押して文字列を読み取りますが、文字列は変更されていません。この手順は「読み取りの誤解」を引き起こす可能性があります。
5) 対応する Unicode コードページ指定の文字セットに変換します ---- Unicode マッピング
6) 中間処理、データベースは変更せず、Unicode 形式で直接入力
7) コードページを押してデータベース Unicode を読み取ります -- コードページで指定された文字セット マッピング
8) Charset で指定された文字セットから読み取られた文字列が変更されていないことを示します。
例 1 で説明しましょう。
例 2:
めまい。さあ、知識を活用してみましょう。
ケース1。
簡体字中国語システムでは正常に動作するコードでも、異空間に配置するとデータベース内で文字化けが発生し、元のデータも文字化けしてしまいます。
分析: ほとんどの人は通常、デフォルトのコードページ = 936 である簡体字中国語システムを使用しているため、全員がコードページを書かなくても問題ありません。
しかし、海外に行くとスペースの問題が生じます。データベース内の Unicode は英語エンコードに変換されているため、データベース内の元の簡体字中国語を英語に変換すると、GB 表示は当然文字化けします。
図に示すように、新しく入力したテキストは通常どおり表示されますが、英語の Unicode がデータベースに保存されます。
解決策: <%@codepage=936%> をすべてに追加します。
プロセス全体には、簡体字中国語と対応する Unicode 間の変換のみが含まれます。
ケース 2:
簡体字中国語のコードとデータを完全な繁体字中国語バージョンに変換したい場合はどうすればよいですか?
分析: 1.すべてのコード ファイルのエンコードは Big5 に変更され、ファイル自体は繁体字中国語で保存されます。
2. <%@ codepage=936 %>
3.文字セット=big5
4. Access のデータは Unicode であるため、Access のバージョンは関係ありません。
5. わかりました。コードは純粋な繁体字中国語システムで実行できます。
6. 残された問題: オリジナルの簡体字中国語データを読むと、いくつかの疑問符が表示されます。効果は、例 1、big5 表示の 950 読み取り値と同じです。簡体字中国語の Unicode は繁体字中国語に変換されるため、一部の文字は繁体字中国語にないため、疑問符が表示されます。
7. 解決策: 一時的な ASP ページ codepage=65001 を使用し、それを簡体字中国語 Unicode として読み取り、Unicode->Big5 関数を使用して繁体字中国語に変換し、データベースに書き戻すと、うまくいくはずです。
この 2 つのケースは完全に理論に基づいて私が推測したものであり、確認されていません。
同じような経験をお持ちの方は、批判や修正をお待ちしております。