JavaScript(ノード)、27バイト
s=>s.map(Buffer.byteLength)
これは、個々の文字の配列として入力を受け取り、バイトカウントの配列を返します。
Buffer
生のバイナリデータを表現する方法です。Buffer.byteLength(string)は、文字列のバイト数を示します。UTF-8がデフォルトのエンコードです。ブラウザーJSではなく、Node.jsのみにバッファーがあることに注意してください。大まかなブラウザの同等物はBlobと呼ばれ、31バイトで来ます:
s=>s.map(e=>new Blob([e]).size)
テスト
このファイルを保存してノードで実行するか、オンラインで試してください。
var f =
s=>s.map(Buffer.byteLength)
var tests = [
["!"],
["C","i","a","o"],
["t","ʃ","a","ʊ"],
["A","d","á","m"],
["ĉ","a","ŭ"],
["c","̂","a","u","̆"],
["チ","ャ","オ"],
[],
["!","±","≡","𩸽"]
];
tests.forEach(test => {
console.log(test, f(test));
});
これは結果であるはずです:
$ node bytes.js
[ '!' ] [ 1 ]
[ 'C', 'i', 'a', 'o' ] [ 1, 1, 1, 1 ]
[ 't', 'ʃ', 'a', 'ʊ' ] [ 1, 2, 1, 2 ]
[ 'A', 'd', 'á', 'm' ] [ 1, 1, 2, 1 ]
[ 'ĉ', 'a', 'ŭ' ] [ 2, 1, 2 ]
[ 'c', '̂', 'a', 'u', '̆' ] [ 1, 2, 1, 1, 2 ]
[ 'チ', 'ャ', 'オ' ] [ 3, 3, 3 ]
[] []
[ '!', '±', '≡', '�' ] [ 1, 2, 3, 4 ]