Quantcast
Channel: php-tips » javascript
Viewing all articles
Browse latest Browse all 2

メモ: U+2028,U+2029が含まれるJSONデータをeval関数を使ってデコードするとエラーになる

$
0
0

※firefoxとwebkitで確認してます。

JSONを使ってデータをやり取りするととっても便利なのですが、最近それでハマったのでメモ。

UNICODEには、改行文字がいろいろと定義されているみたいです。
UAX #13: Unicode Newline Guidelines

その中の”LINE SEPARATOR (U+2028)”と”PARAGRAPH SEPARATOR (U+2029)”を含む文字列をJSONデータとしてデコードする際にeval関数を利用すると構文エラーが発生し、うまくパースできません。

テストコードはこんな感じ。

var plain_data = "{data: 'plain-data'}";
var ls_data = "{data: 'ls" + "\u2028" + "-data'}";
var ps_data = "{data: 'ps" + "\u2029" + "-data'}";
//  これは普通にOK
var d1 = eval('(' + plain_data + ')');
document.write( d1.data );
// LSが含まれているとNG
var d2 = eval('(' + ls_data + ')');
document.write( d2.data );
// PSが含まれていてもNG
var d3 = eval('(' + ps_data + ')');
document.write( d3.data );

解決策としては、evalにかける前に、

data.replace(/\u2028|\u2029/g, '');

等として、LS,PSを削除するまたは、LF等の別の改行コードに置き換えるのがよろしいかなと。

もしくは、jQueryのajax系のメソッドを利用すると問題なくパースしてくれるようです。


Viewing all articles
Browse latest Browse all 2

Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Trending Articles


Ang Nobela sa “From Darna to ZsaZsa Zaturnnah: Desire and Fantasy, Essays on...


Lola Bunny para colorear


Libros para colorear


Mandalas de flores para colorear


Dibujos para colorear de perros


Dromedario para colorear


mayabang Quotes, Torpe Quotes, tanga Quotes


Love Quotes Tagalog


Tropa Quotes


Mga Tala sa “Unang Siglo ng Nobela sa Filipinas” (2009) ni Virgilio S. Almario


Gwapo Quotes : Babaero Quotes


Kung Fu Panda para colorear


Girasoles para colorear


Tiburon para colorear


Renos para colorear


Lagarto para colorear


Long Distance Relationship Tagalog Love Quotes


Tagalog Long Distance Relationship Love Quotes


RE: Mutton Pies (mely)


El Vibora (1971) by Francisco V. Coching and Federico C. Javinal





Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC