[8] [DFN[x-user-defined]] は、[[文字符号化]]の1つです。

* 仕様書

[REFS[

- [26] 
[CITE@en-US-x-hixie[HTML Standard]], [TIME[2025-11-04T10:59:41.000Z]], [TIME[2025-11-09T04:00:06.035Z]] <https://html.spec.whatwg.org/#determining-the-character-encoding>

]REFS]

* 処理

[25] [[文字符号化]] [[x-user-defined]] は、
[ [[U+F780]], [[U+F7FF]] ] を [ [N[0x80]], [N[0xFF]] ] と対応付けています。


* 特殊性

[9] 他の[[文字符号化]]とは異なる特別な扱いがあります。[[文字符号化]]も参照。

[17] 
令和7年時点で [CITE[HTML Standard]] に3箇所 [[x-user-defined]] を [[Windows-1252]]
に読み替える規定がありますが、いずれも [[HTML]] [CODE[<meta charset>]]
の解釈に関するものです。
[SRC[>>26]]
[SEE[ [[encoding sniffing algorithm]] ]]

[18] 
[CITE[HTML Standard]] は [[HTTP]] [CODE[charset]] を使うときに読み替えろとは規定していません。
[CITE[Firefox]] も [CITE[Chrome]]
もそのまま [[x-user-defined]] を使います。

[19] 
そのため [[HTTP]] で指定するか [[HTML]] で指定するかによって挙動が違うことになります。
歴史的にはどちらも同じように解釈されていたはずで、
[CITE[HTML Standard]] と [CITE[Encoding Standard]]
が今の形で規定した後にそれに合わせて実装されたためこうなってしまったのでしょうか。

[27] 
これについて [CITE[HTML Standard]] の記載を検討すると、確かに [CITE[HTML Standard]]
は [[HTTP]] [CODE[charset]] の読み替えを規定していませんが、実は
[[HTTP]] [CODE[charset]] の値を使うとも定めておらず、
[[転送プロトコル]]の[[文字符号化]]を使うことしか求めていません
[SRC[>>26]]。
[SEE[ [[encoding sniffing algorithm]], [[文字コードの決定]] ]]

[28] 
[CITE[HTML Standard]] の当該規定が作られた当時はまだ [CITE[Encoding Standard]] 
がなく、 [[HTTP]] や [[MIME]] の仕様書にも曖昧さが多いため、
[[文字符号化]]に関する規定を厳密に記述することができませんでした。
そこで [CODE[charset]] [[引数]]が云々という具体的な規定は含まれず、
抽象的な規定にとどまっているのです。
([[HTTP]] や [[MIME]] とは違う[[転送プロトコル]]が使われる可能性への配慮でもあります。)

[29] 
従って、 [CODE[charset]] [[引数]]に指定された値 (仕様上は [[MIME charset]])
を [CITE[HTML Standard]] がいう「文字符号化」や 
[CITE[Encoding Standard]] がいう[[符号化]]へとどのように変換するか、
仕様上は定めがありません。
仮に [CODE[charset]] が [CODE[x-user-defined]] と記載されていたとして、
それを [CITE[Encoding Standard]] の [[x-user-defined]]
に対応付けるのが正しいか、 [[Windows-1252]]
に対応付けるのが正しいか、それ以外の選択が正しいのか、
[CITE[HTML Standard]] は何も言っていないのに等しいのです。

[30] 
[CITE[HTML Standard]] の現状の曖昧な規定および [CITE[Firefox]] や [CITE[Chrome]]
の現状の実装は、 [[Web互換]]では''ありません''。



[20] 実例 [SEE[ [[TSCII]] ]]

* 文脈


[SEE[ [[フォント依存符号化]] ]]

[23] [[PASCII]], [[MyaZedi]]

[22] [[HTTPヘッダー]]での利用事例 [SEE[ [[TSCII]] ]]

[21] 
[DFN[[CODE[user-defined]]]] の利用事例 [SEE[ [[Shree-Tel-0900]], [[VNI]] ]]

[SEE[ [[encoding sniffing algorithm]] ]]

[31] [CITE@en[compact_enc_det/compact_enc_det/compact_enc_det.cc at master · google/compact_enc_det · GitHub]], [TIME[2025-11-09T09:42:37.000Z]] <https://github.com/google/compact_enc_det/blob/master/compact_enc_det/compact_enc_det.cc#L1809C1-L1809C5>

[CODE[user-defined]] の処理

* 関連

[24] [[PUA]]

* 歴史

[1] [CITE@en[Using XMLHttpRequest - MDN]]
( ([TIME[2011-09-17 00:18:50 +09:00]] 版))
<https://developer.mozilla.org/En/XMLHttpRequest/Using_XMLHttpRequest#Receiving_binary_data_in_older_browsers>

[2] [CITE[IRC logs: freenode / #whatwg / 20131129]]
( ([TIME[2013-12-01 11:05:17 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20131129>

[3] [CITE@en[6588 – implement "User-Defined" charset]]
( ([TIME[2014-05-13 01:32:59 +09:00]] 版))
<https://bugzilla.mozilla.org/show_bug.cgi?id=6588>

[4] [CITE[Unicode Mail List Archive: Re: Unicode Devanagari Font in Mozil]]
( ([[James Kass (jameskass@worldnet.att.net)]] 著, [TIME[2002-07-18 14:42:09 +09:00]] 版))
<http://www.unicode.org/mail-arch/unicode-ml/y2002-m07/0411.html>

[5] [[電子メール]]での利用例もあるようですが、いつから誰が使っているのかははっきりしません。
2000年代以後のもので、 >>3 より後です。


[6] [CITE@en-US[Encoding Standard]]
( ([TIME[2014-05-12 14:33:32 +09:00]] 版))
<http://encoding.spec.whatwg.org/#x-user-defined>

[7] [CITE@en[Web Applications 1.0 r8618     Make <meta charset=x-user-defined> turn into windows-1252 for legacy reasons]]
( ([TIME[2014-05-08 08:32:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8617&to=8618>

[10] [[Chrome]] は [CODE(HTMLe)@en[meta]] で指定された時、 [[Windows-1252]]
に読み替えます (仕様通りの動作)。
[[HTTPヘッダー]]や [[HTML文書]]中の [[XML宣言]]での指定、
[[CSS]] の [CODE[@charset]] の指定では、そのまま [[x-user-defined]]
として扱います。 [TIME[2017-05-06T14:19:06.300Z]]

[11] [[Chrome]] は [[XML宣言]]に
[CODE[x-user-defined]] が指定されている時、未知の[[文字符号化]]だとして[[整形式]]性エラーを表示します。
[[HTTPヘッダー]]で [CODE[x-user-defined]] が指定されていれば、それを尊重しますが、
[[XML宣言]]があればエラーになります (なければエラー無く取り扱えます)。
[TIME[2017-05-06T14:20:54.600Z]]

[12] [CITE@en[chardetng: A More Compact Character Encoding Detector for the Legacy Web]]
([[Henri Sivonen]], [TIME[2020-06-08T16:23:51.000Z]], [TIME[2021-10-15T03:19:42.333Z]])
<https://hsivonen.fi/chardetng/#fonts>

[13] [CITE[Armenian NLS - Internet]], [TIME[2022-05-14T03:50:19.000Z]], [TIME[2002-12-11T00:51:55.712Z]] <http://web.archive.org/web/20021210124951/http://www-us.webmasters.am/armnls/inet.htm>

>
It is recommended to define the character set explicitly in the "Content-type" meta tag when composing a web page in Armenian. The "charset" value can be either "x-user-defined", or "armscii-8". The latter is preferred, since future implementations of web browsers may recognize this encoding. Sample HTML code to be added in the <head> section:
[PRE[
    <meta http-equiv="Content-Type" content="text/html; charset=x-user-defined">
]PRE]
or
[PRE[
    <meta http-equiv="Content-Type" content="text/html; charset=armscii-8">
]PRE]




[14] [CITE[Scaleable Georgian fonts in X]], [TIME[2025-06-01T07:33:49.000Z]] <https://shoshia.tripod.com/fonts.html>

>
[PRE[
  <meta content="text/html; charset=x-user-defined" http-equiv="Content-Type">
]PRE]

[15] >>14 この頁自体は実際には [[ASCII]] のみ ([CODE[GEO8-GOV]] 等を紹介している記事)。



[16] [CODE[georgian-academy]],
[[TSCII]] に実例