「JavaScript UTF-8文字列のバイト数を得る」の版間の差分
ナビゲーションに移動
検索に移動
| 1行目: | 1行目: | ||
| − | ==JavaScript UTF-8文字列のバイト数を得る== | + | ==[[JavaScript UTF-8文字列のバイト数を得る]]== |
[[文字化けの対処]] | [[JavaScript]] | | [[文字化けの対処]] | [[JavaScript]] | | ||
| 12行目: | 12行目: | ||
*/ | */ | ||
function getBytes(str) { | function getBytes(str) { | ||
| − | // | + | // U[[R]]Lエンコードされる文字列 |
| − | var | + | var ESCAPECHA[[R]] = ";,/?:@&=+$ "; |
| − | // | + | // U[[R]]LエンコードされたUTF-8文字列表現の桁数とバイト数の対応テーブル |
| − | // | + | // encodeU[[R]]I("あ") → "%E3%81%82" (9桁) → 3バイト |
var ESCAPEDLEN_TABLE = [ 0, 1, 1, 1, 2, 3, 2, 3, 4, 3 ]; | var ESCAPEDLEN_TABLE = [ 0, 1, 1, 1, 2, 3, 2, 3, 4, 3 ]; | ||
var size = 0; | var size = 0; | ||
| 23行目: | 23行目: | ||
for (var i=0; i<str.length; i++) { | for (var i=0; i<str.length; i++) { | ||
var c = str.charAt(i); | var c = str.charAt(i); | ||
| − | if ( | + | if (ESCAPECHA[[R]].indexOf(c) >= 0) { |
size++; | size++; | ||
} else { | } else { | ||
2020年2月16日 (日) 04:28時点における最新版
JavaScript UTF-8文字列のバイト数を得る
文字化けの対処 | JavaScript |
参考
以下を参考に
例
/*
* 指定された文字列のバイト長(UTF-8)を得る
*/
function getBytes(str) {
// URLエンコードされる文字列
var ESCAPECHAR = ";,/?:@&=+$ ";
// URLエンコードされたUTF-8文字列表現の桁数とバイト数の対応テーブル
// encodeURI("あ") → "%E3%81%82" (9桁) → 3バイト
var ESCAPEDLEN_TABLE = [ 0, 1, 1, 1, 2, 3, 2, 3, 4, 3 ];
var size = 0;
if (str == null || str == "") {
return size;
}
for (var i=0; i<str.length; i++) {
var c = str.charAt(i);
if (ESCAPECHAR.indexOf(c) >= 0) {
size++;
} else {
size += ESCAPEDLEN_TABLE[encodeURI(c).length];
}
}
return size;
}
© 2006 矢木浩人