1705785200
2024-01-20 19:56:10
ディスクまたはネットワークからテキスト コンテンツを復元する場合、それが UTF-8 の Unicode 文字列であることが期待される場合があります。 最も一般的な形式です。 残念ながら、すべてのバイト シーケンスが有効な UTF-8 であるわけではなく、検証せずに無効な UTF-8 を受け入れるとセキュリティ リスクが発生します。
JavaScript ランタイムで UTF-8 文字列を検証するにはどうすればよいでしょうか?
valid-8 モジュールを使用することもできます。
import valid8 from "valid-8"; if(!valid8(file_content)) { console.log("not UTF-8"); }
もう 1 つの推奨されるアプローチは、TextDecoder がエラー時に例外をスローできるという事実を利用することです。
new TextDecoder("utf8", { fatal: true }).decode(file_content)
または、Node.js および Bun の一部である isUtf8 関数を使用することもできます。
import { isUtf8 } from "node:buffer"; if(!isUtf8(file_content)) { console.log("not UTF-8"); }
| アラビア語 | 中国語 | ラテン | |
| 有効-8 | 0.14GB/秒 | 0.17GB/秒 | 0.50GB/秒 |
| テキストデコーダ | 0.18GB/秒 | 0.19GB/秒 | 7GB/秒 |
| ノード:バッファ | 17GB/秒 | 17GB/秒 | 44GB/秒 |
Node.js の現在の isUtf8 関数は次のように実装されました。 ヤギズ・ニジプリ。 以下の simdutf ライブラリを使用します。 UTF-8 検証アルゴリズムの功績は John Keizer にあると考えられます。
#JavaScript #で #UTF8 #文字列をどれくらい速く検証できますか #ダニエルレミアのブログ