@@ -293,15 +293,9 @@ export class DataObjects {
293
293
if ( dtype_class == 'VLEN_STRING' ) {
294
294
let character_set = dtype [ 2 ] ;
295
295
var [ vlen , vlen_data ] = this . _vlen_size_and_data ( buf , offset ) ;
296
- let fmt = '<' + vlen . toFixed ( ) + 's' ;
297
- let str_data = struct . unpack_from ( fmt , vlen_data , 0 ) [ 0 ] ;
298
- if ( character_set == 0 ) {
299
- //# ascii character set, return as bytes
300
- value [ i ] = str_data ;
301
- }
302
- else {
303
- value [ i ] = decodeURIComponent ( escape ( str_data ) ) ;
304
- }
296
+ const encoding = ( character_set == 0 ) ? "ascii" : "utf-8" ;
297
+ const decoder = new TextDecoder ( encoding ) ;
298
+ value [ i ] = decoder . decode ( vlen_data ) ;
305
299
offset += 16
306
300
}
307
301
else if ( dtype_class == 'REFERENCE' ) {
@@ -707,18 +701,12 @@ export class DataObjects {
707
701
}
708
702
else if ( dtype_class == 'VLEN_STRING' ) {
709
703
let character_set = this . dtype [ 2 ] ;
704
+ const encoding = ( character_set == 0 ) ? "ascii" : "utf-8" ;
705
+ const decoder = new TextDecoder ( encoding ) ;
710
706
var value = [ ] ;
711
707
for ( var i = 0 ; i < fullsize ; i ++ ) {
712
- var [ vlen , vlen_data ] = this . _vlen_size_and_data ( this . fh , data_offset ) ;
713
- let fmt = '<' + vlen . toFixed ( ) + 's' ;
714
- let str_data = struct . unpack_from ( fmt , vlen_data , 0 ) [ 0 ] ;
715
- if ( character_set == 0 ) {
716
- //# ascii character set, return as bytes
717
- value [ i ] = str_data ;
718
- }
719
- else {
720
- value [ i ] = decodeURIComponent ( escape ( str_data ) ) ;
721
- }
708
+ const [ vlen , vlen_data ] = this . _vlen_size_and_data ( this . fh , data_offset ) ;
709
+ value [ i ] = decoder . decode ( vlen_data ) ;
722
710
data_offset += 16 ;
723
711
}
724
712
return value ;
@@ -753,15 +741,9 @@ export class DataObjects {
753
741
let vlen_data = gheap . objects . get ( object_index ) ;
754
742
if ( dtype_class == 'VLEN_STRING' ) {
755
743
let character_set = this . dtype [ 2 ] ;
756
- let fmt = '<' + item_size . toFixed ( ) + 's' ;
757
- let str_data = struct . unpack_from ( fmt , vlen_data , 0 ) [ 0 ] ;
758
- if ( character_set == 0 ) {
759
- //# ascii character set, return as bytes
760
- data [ i ] = str_data ;
761
- }
762
- else {
763
- data [ i ] = decodeURIComponent ( escape ( str_data ) ) ;
764
- }
744
+ const encoding = ( character_set == 0 ) ? "ascii" : "utf-8" ;
745
+ const decoder = new TextDecoder ( encoding ) ;
746
+ data [ i ] = decoder . decode ( vlen_data ) ;
765
747
}
766
748
}
767
749
}
0 commit comments