Repository navigation
OTR_CharacterEncoding
nishi_74322014 edited this page Oct 27, 2026
·
1 revision
文字コード・エンコーディング・キャラクタ・セットの設計の基本。
- .NET の文字列は内部が UTF-16、外部の既定は UTF-8。現在は、入口から出口まで UTF-8 / Unicode で統一するのが基本。
- 異なる文字コードと連携するときだけ変換が要る。可逆に変換できるかを検証する(外字・機種依存文字は化ける、欠落する)。
| 部品 | 用途 |
|---|---|
StringChecker.IsInCodePage(input, codePage) |
指定のコードページで可逆か(その文字集合に収まるか) |
StringChecker.IsShift_Jis(input) |
Shift_JIS で可逆か |
JIS2k4Checker.CheckSurrogatesPairChar |
サロゲート・ペア(絵文字、第 3・第 4 水準漢字の一部)を含むかを検出 |
JIS2k4Checker.DeleteSurrogatesPairChar |
サロゲート・ペアを除去・置換 |
- JIS X 0208(第 1・第 2 水準)、JIS X 0212(補助漢字)、JIS X 0213・JIS2004(第 3・第 4 水準。一部はサロゲート・ペア)。
- 扱う水準を決めて、DB・画面・帳票・外部連携で揃える。 どこか 1 つが対応していないと、化け・欠落・例外になる。
| 対象 | 方針 |
|---|---|
| Web |
<meta charset="utf-8"> + UTF-8 のレスポンス |
| SQL 定義ファイル | 設定 FxSqlEncoding
|
| DB | SQL Server は nvarchar、MySQL は utf8mb4(utf8 は 3 バイトで絵文字が入らない) |
| ソースとビュー |
.cs / .vb / .cshtml / .aspx / .master は UTF-8 BOM 付き(コメント規約) |
- HTML を Shift_JIS にすると、表現できない文字は数値文字参照に変換される。
- 全体を UTF-8 / Unicode で統一するか。
- 入力の文字集合を検証するか(Shift_JIS 互換が要るなら
IsShift_Jisなど)。 - サロゲート・ペアを許可するか(許可するなら DB を
nvarchar/utf8mb4に。許可しないなら検出して拒否・置換)。
- スキル
opentouryo-app-design(references/character-encoding.md)を使わせる。 - エージェントのファイル書き込みは通常 BOM 無しなので、BOM の付与を機械的に確認させる。
Tags: 再構築
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。