Skip to content

Commit 0e4ab5b

Browse files
committed
完善文档
1 parent 802dc18 commit 0e4ab5b

File tree

1 file changed

+38
-3
lines changed

1 file changed

+38
-3
lines changed

模块/string_decoder.md

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@
88

99
## 入门例子
1010

11-
下面的例子中,`decoder.write(buffer)`调用传入了Buffer对象`<Buffer e4 bd a0>`,相应的返回了对应的字符串``;
11+
这节分别演示了`decode.write(buffer)``decode.end([buffer])`两个主要API的用法。
12+
13+
例子一:
14+
15+
`decoder.write(buffer)`调用传入了Buffer对象`<Buffer e4 bd a0>`,相应的返回了对应的字符串``;
1216

1317
```javascript
1418
const StringDecoder = require('string_decoder').StringDecoder;
@@ -19,9 +23,25 @@ const str = decoder.write(Buffer.from([0xe4, 0xbd, 0xa0]));
1923
console.log(str); //
2024
```
2125

22-
## 例子:字节数不完整的处理
26+
例子二:
27+
28+
`decoder.end([buffer])`被调用时,内部剩余的buffer会被一次性返回。如果此时带上`buffer`参数,那么相当于同时调用`decoder.write(buffer)``decoder.end()`
29+
30+
```javascript
31+
const StringDecoder = require('string_decoder').StringDecoder;
32+
const decoder = new StringDecoder('utf8');
33+
34+
// Buffer.from('你好') => <Buffer e4 bd a0 e5 a5 bd>
35+
let str = decoder.write(Buffer.from([0xe4, 0xbd, 0xa0, 0xe5, 0xa5]));
36+
console.log(str); //
37+
38+
str = decoder.end(Buffer.from([0xbd]));
39+
console.log(str); //
40+
```
41+
42+
## 例子:分多次写入多个字节
2343

24-
下面的例子,演示了当传入字节数不完整时`string_decoder`模块是怎么处理的。
44+
下面的例子,演示了分多次写入多个字节时`string_decoder`模块是怎么处理的。
2545

2646
首先,传入了`<Buffer e4 bd a0 e5 a5>```还差1个字节,此时,`decoder.write(xx)`返回``
2747

@@ -38,6 +58,21 @@ console.log(str); // 你
3858
str = decoder.write(Buffer.from([0xbd]));
3959
console.log(str); //
4060
```
61+
## 例子:decoder.end()时,字节数不完整的处理
62+
63+
`decoder.end(buffer)`时,仅传入了``的第1个字节,此时调用`decoder.end()`,返回了``,对应的buffer为`<Buffer ef bf bd>`
64+
65+
```javascript
66+
const StringDecoder = require('string_decoder').StringDecoder;
67+
68+
// Buffer.from('好') => <Buffer e5 a5 bd>
69+
let decoder = new StringDecoder('utf8');
70+
let str = decoder.end( Buffer.from([0xe5]) );
71+
console.log(str); //
72+
console.log(Buffer.from(str)); // <Buffer ef bf bd>
73+
```
74+
75+
官方文档对于这种情况的解释是这样的(跟废话差不多),大约是约定俗成了,当`utf8`码点无效时,替换成`ef bf bd`
4176

4277
>Returns any remaining input stored in the internal buffer as a string. Bytes representing incomplete UTF-8 and UTF-16 characters will be replaced with substitution characters appropriate for the character encoding.
4378

0 commit comments

Comments
 (0)