1 ===== Conversion of a one-byte character ===== 2 3 ----- Valid characters ----- 4 UTF8: 00 7f 01 10 7e 5d 5 UTF16: 0000 007f 0001 0010 007e 005d 6 cc = 0 7 dst address difference: 12 dst len: 1988 8 src address difference: 6 src len: 0 9 10 ----- Invalid characters ----- 11 UTF8: 80 12 UTF16: <none> 13 cc = 2 14 dst address difference: 0 dst len: 2000 15 src address difference: 0 src len: 1 16 UTF8: bf 17 UTF16: <none> 18 cc = 2 19 dst address difference: 0 dst len: 2000 20 src address difference: 0 src len: 1 21 UTF8: f8 22 UTF16: <none> 23 cc = 2 24 dst address difference: 0 dst len: 2000 25 src address difference: 0 src len: 1 26 UTF8: ff 27 UTF16: <none> 28 cc = 2 29 dst address difference: 0 dst len: 2000 30 src address difference: 0 src len: 1 31 UTF8: 81 32 UTF16: <none> 33 cc = 2 34 dst address difference: 0 dst len: 2000 35 src address difference: 0 src len: 1 36 UTF8: be 37 UTF16: <none> 38 cc = 2 39 dst address difference: 0 dst len: 2000 40 src address difference: 0 src len: 1 41 UTF8: 95 42 UTF16: <none> 43 cc = 2 44 dst address difference: 0 dst len: 2000 45 src address difference: 0 src len: 1 46 UTF8: ab 47 UTF16: <none> 48 cc = 2 49 dst address difference: 0 dst len: 2000 50 src address difference: 0 src len: 1 51 52 ----- Invalid characters if m3 == 1 ----- 53 UTF8: c0 54 UTF16: <none> 55 cc = 0 56 dst address difference: 0 dst len: 2000 57 src address difference: 0 src len: 1 58 UTF8: c1 59 UTF16: <none> 60 cc = 0 61 dst address difference: 0 dst len: 2000 62 src address difference: 0 src len: 1 63 UTF8: f5 64 UTF16: <none> 65 cc = 0 66 dst address difference: 0 dst len: 2000 67 src address difference: 0 src len: 1 68 UTF8: f6 69 UTF16: <none> 70 cc = 0 71 dst address difference: 0 dst len: 2000 72 src address difference: 0 src len: 1 73 UTF8: f7 74 UTF16: <none> 75 cc = 0 76 dst address difference: 0 dst len: 2000 77 src address difference: 0 src len: 1 78 79 ----- 1st char valid, 2nd char invalid ----- 80 UTF8: 10 aa 81 UTF16: 0010 82 cc = 2 83 dst address difference: 2 dst len: 1998 84 src address difference: 1 src len: 1 85 86 ===== Conversion of a two-byte character ===== 87 88 ----- Valid characters ----- 89 UTF8: c2 80 c2 bf df 80 df bf c3 be da bc 90 UTF16: 0080 00bf 07c0 07ff 00fe 06bc 91 cc = 0 92 dst address difference: 12 dst len: 1988 93 src address difference: 12 src len: 0 94 95 ----- Valid characters if m3 == 0 ----- 96 UTF8: c0 80 c0 bf c1 80 c0 bf 97 UTF16: 0000 003f 0040 003f 98 cc = 0 99 dst address difference: 8 dst len: 1992 100 src address difference: 8 src len: 0 101 102 ----- Invalid characters if m3 == 1 ----- 103 UTF8: c2 00 104 UTF16: 0080 105 cc = 0 106 dst address difference: 2 dst len: 1998 107 src address difference: 2 src len: 0 108 UTF8: c2 7f 109 UTF16: 00bf 110 cc = 0 111 dst address difference: 2 dst len: 1998 112 src address difference: 2 src len: 0 113 UTF8: c2 c0 114 UTF16: 0080 115 cc = 0 116 dst address difference: 2 dst len: 1998 117 src address difference: 2 src len: 0 118 UTF8: c2 ff 119 UTF16: 00bf 120 cc = 0 121 dst address difference: 2 dst len: 1998 122 src address difference: 2 src len: 0 123 124 ----- 1st char valid, 2nd char invalid ----- 125 UTF8: c3 81 c4 00 126 UTF16: 00c1 0100 127 cc = 0 128 dst address difference: 4 dst len: 1996 129 src address difference: 4 src len: 0 130 131 ===== Conversion of a three-byte character ===== 132 133 ----- Valid characters ----- 134 UTF8: e0 a0 80 e0 bf 80 e0 a0 bf e0 bf bf e0 aa bb 135 UTF16: 0800 0fc0 083f 0fff 0abb 136 cc = 0 137 dst address difference: 10 dst len: 1990 138 src address difference: 15 src len: 0 139 UTF8: ed 80 80 ed 9f 80 ed 80 bf ed 9f bf ed 8a bb 140 UTF16: d000 d7c0 d03f d7ff d2bb 141 cc = 0 142 dst address difference: 10 dst len: 1990 143 src address difference: 15 src len: 0 144 UTF8: e1 80 80 145 UTF16: 1000 146 cc = 0 147 dst address difference: 2 dst len: 1998 148 src address difference: 3 src len: 0 149 UTF8: e1 bf 80 150 UTF16: 1fc0 151 cc = 0 152 dst address difference: 2 dst len: 1998 153 src address difference: 3 src len: 0 154 UTF8: e1 80 bf 155 UTF16: 103f 156 cc = 0 157 dst address difference: 2 dst len: 1998 158 src address difference: 3 src len: 0 159 UTF8: e1 bf bf 160 UTF16: 1fff 161 cc = 0 162 dst address difference: 2 dst len: 1998 163 src address difference: 3 src len: 0 164 UTF8: e2 80 80 165 UTF16: 2000 166 cc = 0 167 dst address difference: 2 dst len: 1998 168 src address difference: 3 src len: 0 169 UTF8: e2 bf 80 170 UTF16: 2fc0 171 cc = 0 172 dst address difference: 2 dst len: 1998 173 src address difference: 3 src len: 0 174 UTF8: e2 80 bf 175 UTF16: 203f 176 cc = 0 177 dst address difference: 2 dst len: 1998 178 src address difference: 3 src len: 0 179 UTF8: e2 bf bf 180 UTF16: 2fff 181 cc = 0 182 dst address difference: 2 dst len: 1998 183 src address difference: 3 src len: 0 184 UTF8: e3 80 80 185 UTF16: 3000 186 cc = 0 187 dst address difference: 2 dst len: 1998 188 src address difference: 3 src len: 0 189 UTF8: e3 bf 80 190 UTF16: 3fc0 191 cc = 0 192 dst address difference: 2 dst len: 1998 193 src address difference: 3 src len: 0 194 UTF8: e3 80 bf 195 UTF16: 303f 196 cc = 0 197 dst address difference: 2 dst len: 1998 198 src address difference: 3 src len: 0 199 UTF8: e3 bf bf 200 UTF16: 3fff 201 cc = 0 202 dst address difference: 2 dst len: 1998 203 src address difference: 3 src len: 0 204 UTF8: e4 80 80 205 UTF16: 4000 206 cc = 0 207 dst address difference: 2 dst len: 1998 208 src address difference: 3 src len: 0 209 UTF8: e4 bf 80 210 UTF16: 4fc0 211 cc = 0 212 dst address difference: 2 dst len: 1998 213 src address difference: 3 src len: 0 214 UTF8: e4 80 bf 215 UTF16: 403f 216 cc = 0 217 dst address difference: 2 dst len: 1998 218 src address difference: 3 src len: 0 219 UTF8: e4 bf bf 220 UTF16: 4fff 221 cc = 0 222 dst address difference: 2 dst len: 1998 223 src address difference: 3 src len: 0 224 UTF8: e5 80 80 225 UTF16: 5000 226 cc = 0 227 dst address difference: 2 dst len: 1998 228 src address difference: 3 src len: 0 229 UTF8: e5 bf 80 230 UTF16: 5fc0 231 cc = 0 232 dst address difference: 2 dst len: 1998 233 src address difference: 3 src len: 0 234 UTF8: e5 80 bf 235 UTF16: 503f 236 cc = 0 237 dst address difference: 2 dst len: 1998 238 src address difference: 3 src len: 0 239 UTF8: e5 bf bf 240 UTF16: 5fff 241 cc = 0 242 dst address difference: 2 dst len: 1998 243 src address difference: 3 src len: 0 244 UTF8: e6 80 80 245 UTF16: 6000 246 cc = 0 247 dst address difference: 2 dst len: 1998 248 src address difference: 3 src len: 0 249 UTF8: e6 bf 80 250 UTF16: 6fc0 251 cc = 0 252 dst address difference: 2 dst len: 1998 253 src address difference: 3 src len: 0 254 UTF8: e6 80 bf 255 UTF16: 603f 256 cc = 0 257 dst address difference: 2 dst len: 1998 258 src address difference: 3 src len: 0 259 UTF8: e6 bf bf 260 UTF16: 6fff 261 cc = 0 262 dst address difference: 2 dst len: 1998 263 src address difference: 3 src len: 0 264 UTF8: e7 80 80 265 UTF16: 7000 266 cc = 0 267 dst address difference: 2 dst len: 1998 268 src address difference: 3 src len: 0 269 UTF8: e7 bf 80 270 UTF16: 7fc0 271 cc = 0 272 dst address difference: 2 dst len: 1998 273 src address difference: 3 src len: 0 274 UTF8: e7 80 bf 275 UTF16: 703f 276 cc = 0 277 dst address difference: 2 dst len: 1998 278 src address difference: 3 src len: 0 279 UTF8: e7 bf bf 280 UTF16: 7fff 281 cc = 0 282 dst address difference: 2 dst len: 1998 283 src address difference: 3 src len: 0 284 UTF8: e8 80 80 285 UTF16: 8000 286 cc = 0 287 dst address difference: 2 dst len: 1998 288 src address difference: 3 src len: 0 289 UTF8: e8 bf 80 290 UTF16: 8fc0 291 cc = 0 292 dst address difference: 2 dst len: 1998 293 src address difference: 3 src len: 0 294 UTF8: e8 80 bf 295 UTF16: 803f 296 cc = 0 297 dst address difference: 2 dst len: 1998 298 src address difference: 3 src len: 0 299 UTF8: e8 bf bf 300 UTF16: 8fff 301 cc = 0 302 dst address difference: 2 dst len: 1998 303 src address difference: 3 src len: 0 304 UTF8: e9 80 80 305 UTF16: 9000 306 cc = 0 307 dst address difference: 2 dst len: 1998 308 src address difference: 3 src len: 0 309 UTF8: e9 bf 80 310 UTF16: 9fc0 311 cc = 0 312 dst address difference: 2 dst len: 1998 313 src address difference: 3 src len: 0 314 UTF8: e9 80 bf 315 UTF16: 903f 316 cc = 0 317 dst address difference: 2 dst len: 1998 318 src address difference: 3 src len: 0 319 UTF8: e9 bf bf 320 UTF16: 9fff 321 cc = 0 322 dst address difference: 2 dst len: 1998 323 src address difference: 3 src len: 0 324 UTF8: ea 80 80 325 UTF16: a000 326 cc = 0 327 dst address difference: 2 dst len: 1998 328 src address difference: 3 src len: 0 329 UTF8: ea bf 80 330 UTF16: afc0 331 cc = 0 332 dst address difference: 2 dst len: 1998 333 src address difference: 3 src len: 0 334 UTF8: ea 80 bf 335 UTF16: a03f 336 cc = 0 337 dst address difference: 2 dst len: 1998 338 src address difference: 3 src len: 0 339 UTF8: ea bf bf 340 UTF16: afff 341 cc = 0 342 dst address difference: 2 dst len: 1998 343 src address difference: 3 src len: 0 344 UTF8: eb 80 80 345 UTF16: b000 346 cc = 0 347 dst address difference: 2 dst len: 1998 348 src address difference: 3 src len: 0 349 UTF8: eb bf 80 350 UTF16: bfc0 351 cc = 0 352 dst address difference: 2 dst len: 1998 353 src address difference: 3 src len: 0 354 UTF8: eb 80 bf 355 UTF16: b03f 356 cc = 0 357 dst address difference: 2 dst len: 1998 358 src address difference: 3 src len: 0 359 UTF8: eb bf bf 360 UTF16: bfff 361 cc = 0 362 dst address difference: 2 dst len: 1998 363 src address difference: 3 src len: 0 364 UTF8: ec 80 80 365 UTF16: c000 366 cc = 0 367 dst address difference: 2 dst len: 1998 368 src address difference: 3 src len: 0 369 UTF8: ec bf 80 370 UTF16: cfc0 371 cc = 0 372 dst address difference: 2 dst len: 1998 373 src address difference: 3 src len: 0 374 UTF8: ec 80 bf 375 UTF16: c03f 376 cc = 0 377 dst address difference: 2 dst len: 1998 378 src address difference: 3 src len: 0 379 UTF8: ec bf bf 380 UTF16: cfff 381 cc = 0 382 dst address difference: 2 dst len: 1998 383 src address difference: 3 src len: 0 384 UTF8: ee 80 80 385 UTF16: e000 386 cc = 0 387 dst address difference: 2 dst len: 1998 388 src address difference: 3 src len: 0 389 UTF8: ee bf 80 390 UTF16: efc0 391 cc = 0 392 dst address difference: 2 dst len: 1998 393 src address difference: 3 src len: 0 394 UTF8: ee 80 bf 395 UTF16: e03f 396 cc = 0 397 dst address difference: 2 dst len: 1998 398 src address difference: 3 src len: 0 399 UTF8: ee bf bf 400 UTF16: efff 401 cc = 0 402 dst address difference: 2 dst len: 1998 403 src address difference: 3 src len: 0 404 UTF8: ef 80 80 405 UTF16: f000 406 cc = 0 407 dst address difference: 2 dst len: 1998 408 src address difference: 3 src len: 0 409 UTF8: ef bf 80 410 UTF16: ffc0 411 cc = 0 412 dst address difference: 2 dst len: 1998 413 src address difference: 3 src len: 0 414 UTF8: ef 80 bf 415 UTF16: f03f 416 cc = 0 417 dst address difference: 2 dst len: 1998 418 src address difference: 3 src len: 0 419 UTF8: ef bf bf 420 UTF16: ffff 421 cc = 0 422 dst address difference: 2 dst len: 1998 423 src address difference: 3 src len: 0 424 425 ----- Invalid characters (2nd byte is invalid) ----- 426 UTF8: e0 9f 80 e0 bf 80 e0 a0 bf e0 bf bf e0 aa bb 427 UTF16: 07c0 0fc0 083f 0fff 0abb 428 cc = 0 429 dst address difference: 10 dst len: 1990 430 src address difference: 15 src len: 0 431 UTF8: e0 c0 80 e0 bf 80 e0 a0 bf e0 bf bf e0 aa bb 432 UTF16: 0000 0fc0 083f 0fff 0abb 433 cc = 0 434 dst address difference: 10 dst len: 1990 435 src address difference: 15 src len: 0 436 UTF8: ed 7f 80 ed 9f 80 ed 80 bf ed 9f bf ed 8a bb 437 UTF16: dfc0 d7c0 d03f d7ff d2bb 438 cc = 0 439 dst address difference: 10 dst len: 1990 440 src address difference: 15 src len: 0 441 UTF8: ed a0 80 ed 9f 80 ed 80 bf ed 9f bf ed 8a bb 442 UTF16: d800 d7c0 d03f d7ff d2bb 443 cc = 0 444 dst address difference: 10 dst len: 1990 445 src address difference: 15 src len: 0 446 UTF8: e1 7f 80 447 UTF16: 1fc0 448 cc = 0 449 dst address difference: 2 dst len: 1998 450 src address difference: 3 src len: 0 451 UTF8: e1 c0 80 452 UTF16: 1000 453 cc = 0 454 dst address difference: 2 dst len: 1998 455 src address difference: 3 src len: 0 456 UTF8: e2 7f 80 457 UTF16: 2fc0 458 cc = 0 459 dst address difference: 2 dst len: 1998 460 src address difference: 3 src len: 0 461 UTF8: e2 c0 80 462 UTF16: 2000 463 cc = 0 464 dst address difference: 2 dst len: 1998 465 src address difference: 3 src len: 0 466 UTF8: e3 7f 80 467 UTF16: 3fc0 468 cc = 0 469 dst address difference: 2 dst len: 1998 470 src address difference: 3 src len: 0 471 UTF8: e3 c0 80 472 UTF16: 3000 473 cc = 0 474 dst address difference: 2 dst len: 1998 475 src address difference: 3 src len: 0 476 UTF8: e4 7f 80 477 UTF16: 4fc0 478 cc = 0 479 dst address difference: 2 dst len: 1998 480 src address difference: 3 src len: 0 481 UTF8: e4 c0 80 482 UTF16: 4000 483 cc = 0 484 dst address difference: 2 dst len: 1998 485 src address difference: 3 src len: 0 486 UTF8: e5 7f 80 487 UTF16: 5fc0 488 cc = 0 489 dst address difference: 2 dst len: 1998 490 src address difference: 3 src len: 0 491 UTF8: e5 c0 80 492 UTF16: 5000 493 cc = 0 494 dst address difference: 2 dst len: 1998 495 src address difference: 3 src len: 0 496 UTF8: e6 7f 80 497 UTF16: 6fc0 498 cc = 0 499 dst address difference: 2 dst len: 1998 500 src address difference: 3 src len: 0 501 UTF8: e6 c0 80 502 UTF16: 6000 503 cc = 0 504 dst address difference: 2 dst len: 1998 505 src address difference: 3 src len: 0 506 UTF8: e7 7f 80 507 UTF16: 7fc0 508 cc = 0 509 dst address difference: 2 dst len: 1998 510 src address difference: 3 src len: 0 511 UTF8: e7 c0 80 512 UTF16: 7000 513 cc = 0 514 dst address difference: 2 dst len: 1998 515 src address difference: 3 src len: 0 516 UTF8: e8 7f 80 517 UTF16: 8fc0 518 cc = 0 519 dst address difference: 2 dst len: 1998 520 src address difference: 3 src len: 0 521 UTF8: e8 c0 80 522 UTF16: 8000 523 cc = 0 524 dst address difference: 2 dst len: 1998 525 src address difference: 3 src len: 0 526 UTF8: e9 7f 80 527 UTF16: 9fc0 528 cc = 0 529 dst address difference: 2 dst len: 1998 530 src address difference: 3 src len: 0 531 UTF8: e9 c0 80 532 UTF16: 9000 533 cc = 0 534 dst address difference: 2 dst len: 1998 535 src address difference: 3 src len: 0 536 UTF8: ea 7f 80 537 UTF16: afc0 538 cc = 0 539 dst address difference: 2 dst len: 1998 540 src address difference: 3 src len: 0 541 UTF8: ea c0 80 542 UTF16: a000 543 cc = 0 544 dst address difference: 2 dst len: 1998 545 src address difference: 3 src len: 0 546 UTF8: eb 7f 80 547 UTF16: bfc0 548 cc = 0 549 dst address difference: 2 dst len: 1998 550 src address difference: 3 src len: 0 551 UTF8: eb c0 80 552 UTF16: b000 553 cc = 0 554 dst address difference: 2 dst len: 1998 555 src address difference: 3 src len: 0 556 UTF8: ec 7f 80 557 UTF16: cfc0 558 cc = 0 559 dst address difference: 2 dst len: 1998 560 src address difference: 3 src len: 0 561 UTF8: ec c0 80 562 UTF16: c000 563 cc = 0 564 dst address difference: 2 dst len: 1998 565 src address difference: 3 src len: 0 566 UTF8: ee 7f 80 567 UTF16: efc0 568 cc = 0 569 dst address difference: 2 dst len: 1998 570 src address difference: 3 src len: 0 571 UTF8: ee c0 80 572 UTF16: e000 573 cc = 0 574 dst address difference: 2 dst len: 1998 575 src address difference: 3 src len: 0 576 UTF8: ef 7f 80 577 UTF16: ffc0 578 cc = 0 579 dst address difference: 2 dst len: 1998 580 src address difference: 3 src len: 0 581 UTF8: ef c0 80 582 UTF16: f000 583 cc = 0 584 dst address difference: 2 dst len: 1998 585 src address difference: 3 src len: 0 586 587 ----- Invalid characters (3rd byte is invalid) ----- 588 UTF8: e0 ab 7f 589 UTF16: 0aff 590 cc = 0 591 dst address difference: 2 dst len: 1998 592 src address difference: 3 src len: 0 593 UTF8: e0 ab c0 594 UTF16: 0ac0 595 cc = 0 596 dst address difference: 2 dst len: 1998 597 src address difference: 3 src len: 0 598 UTF8: e1 ab 7f 599 UTF16: 1aff 600 cc = 0 601 dst address difference: 2 dst len: 1998 602 src address difference: 3 src len: 0 603 UTF8: e1 ab c0 604 UTF16: 1ac0 605 cc = 0 606 dst address difference: 2 dst len: 1998 607 src address difference: 3 src len: 0 608 UTF8: e2 ab 7f 609 UTF16: 2aff 610 cc = 0 611 dst address difference: 2 dst len: 1998 612 src address difference: 3 src len: 0 613 UTF8: e2 ab c0 614 UTF16: 2ac0 615 cc = 0 616 dst address difference: 2 dst len: 1998 617 src address difference: 3 src len: 0 618 UTF8: e3 ab 7f 619 UTF16: 3aff 620 cc = 0 621 dst address difference: 2 dst len: 1998 622 src address difference: 3 src len: 0 623 UTF8: e3 ab c0 624 UTF16: 3ac0 625 cc = 0 626 dst address difference: 2 dst len: 1998 627 src address difference: 3 src len: 0 628 UTF8: e4 ab 7f 629 UTF16: 4aff 630 cc = 0 631 dst address difference: 2 dst len: 1998 632 src address difference: 3 src len: 0 633 UTF8: e4 ab c0 634 UTF16: 4ac0 635 cc = 0 636 dst address difference: 2 dst len: 1998 637 src address difference: 3 src len: 0 638 UTF8: e5 ab 7f 639 UTF16: 5aff 640 cc = 0 641 dst address difference: 2 dst len: 1998 642 src address difference: 3 src len: 0 643 UTF8: e5 ab c0 644 UTF16: 5ac0 645 cc = 0 646 dst address difference: 2 dst len: 1998 647 src address difference: 3 src len: 0 648 UTF8: e6 ab 7f 649 UTF16: 6aff 650 cc = 0 651 dst address difference: 2 dst len: 1998 652 src address difference: 3 src len: 0 653 UTF8: e6 ab c0 654 UTF16: 6ac0 655 cc = 0 656 dst address difference: 2 dst len: 1998 657 src address difference: 3 src len: 0 658 UTF8: e7 ab 7f 659 UTF16: 7aff 660 cc = 0 661 dst address difference: 2 dst len: 1998 662 src address difference: 3 src len: 0 663 UTF8: e7 ab c0 664 UTF16: 7ac0 665 cc = 0 666 dst address difference: 2 dst len: 1998 667 src address difference: 3 src len: 0 668 UTF8: e8 ab 7f 669 UTF16: 8aff 670 cc = 0 671 dst address difference: 2 dst len: 1998 672 src address difference: 3 src len: 0 673 UTF8: e8 ab c0 674 UTF16: 8ac0 675 cc = 0 676 dst address difference: 2 dst len: 1998 677 src address difference: 3 src len: 0 678 UTF8: e9 ab 7f 679 UTF16: 9aff 680 cc = 0 681 dst address difference: 2 dst len: 1998 682 src address difference: 3 src len: 0 683 UTF8: e9 ab c0 684 UTF16: 9ac0 685 cc = 0 686 dst address difference: 2 dst len: 1998 687 src address difference: 3 src len: 0 688 UTF8: ea ab 7f 689 UTF16: aaff 690 cc = 0 691 dst address difference: 2 dst len: 1998 692 src address difference: 3 src len: 0 693 UTF8: ea ab c0 694 UTF16: aac0 695 cc = 0 696 dst address difference: 2 dst len: 1998 697 src address difference: 3 src len: 0 698 UTF8: eb ab 7f 699 UTF16: baff 700 cc = 0 701 dst address difference: 2 dst len: 1998 702 src address difference: 3 src len: 0 703 UTF8: eb ab c0 704 UTF16: bac0 705 cc = 0 706 dst address difference: 2 dst len: 1998 707 src address difference: 3 src len: 0 708 UTF8: ec ab 7f 709 UTF16: caff 710 cc = 0 711 dst address difference: 2 dst len: 1998 712 src address difference: 3 src len: 0 713 UTF8: ec ab c0 714 UTF16: cac0 715 cc = 0 716 dst address difference: 2 dst len: 1998 717 src address difference: 3 src len: 0 718 UTF8: ed ab 7f 719 UTF16: daff 720 cc = 0 721 dst address difference: 2 dst len: 1998 722 src address difference: 3 src len: 0 723 UTF8: ed ab c0 724 UTF16: dac0 725 cc = 0 726 dst address difference: 2 dst len: 1998 727 src address difference: 3 src len: 0 728 UTF8: ee ab 7f 729 UTF16: eaff 730 cc = 0 731 dst address difference: 2 dst len: 1998 732 src address difference: 3 src len: 0 733 UTF8: ee ab c0 734 UTF16: eac0 735 cc = 0 736 dst address difference: 2 dst len: 1998 737 src address difference: 3 src len: 0 738 UTF8: ef ab 7f 739 UTF16: faff 740 cc = 0 741 dst address difference: 2 dst len: 1998 742 src address difference: 3 src len: 0 743 UTF8: ef ab c0 744 UTF16: fac0 745 cc = 0 746 dst address difference: 2 dst len: 1998 747 src address difference: 3 src len: 0 748 749 ----- Invalid 2nd char AND output exhausted ----- 750 UTF8: e0 00 80 751 UTF16: <none> 752 cc = 1 753 dst address difference: 0 dst len: 1 754 src address difference: 0 src len: 3 755 756 ----- Invalid 3rd char AND output exhausted ----- 757 UTF8: e4 84 00 758 UTF16: <none> 759 cc = 1 760 dst address difference: 0 dst len: 1 761 src address difference: 0 src len: 3 762 763 ----- 1st char valid, 2nd char invalid ----- 764 UTF8: e1 90 90 e1 00 90 765 UTF16: 1410 1010 766 cc = 0 767 dst address difference: 4 dst len: 1996 768 src address difference: 6 src len: 0 769 770 ===== Conversion of a four-byte character ===== 771 772 ----- Valid characters ----- 773 UTF8: f0 90 80 80 774 UTF16: d800 dc00 775 cc = 0 776 dst address difference: 4 dst len: 1996 777 src address difference: 4 src len: 0 778 UTF8: f0 90 80 bf 779 UTF16: d800 dc3f 780 cc = 0 781 dst address difference: 4 dst len: 1996 782 src address difference: 4 src len: 0 783 UTF8: f0 90 bf 80 784 UTF16: d803 dfc0 785 cc = 0 786 dst address difference: 4 dst len: 1996 787 src address difference: 4 src len: 0 788 UTF8: f0 90 bf bf 789 UTF16: d803 dfff 790 cc = 0 791 dst address difference: 4 dst len: 1996 792 src address difference: 4 src len: 0 793 UTF8: f0 bf 80 80 794 UTF16: d8bc dc00 795 cc = 0 796 dst address difference: 4 dst len: 1996 797 src address difference: 4 src len: 0 798 UTF8: f0 bf 80 bf 799 UTF16: d8bc dc3f 800 cc = 0 801 dst address difference: 4 dst len: 1996 802 src address difference: 4 src len: 0 803 UTF8: f0 bf bf 80 804 UTF16: d8bf dfc0 805 cc = 0 806 dst address difference: 4 dst len: 1996 807 src address difference: 4 src len: 0 808 UTF8: f0 bf bf bf 809 UTF16: d8bf dfff 810 cc = 0 811 dst address difference: 4 dst len: 1996 812 src address difference: 4 src len: 0 813 UTF8: f1 80 80 80 814 UTF16: d8c0 dc00 815 cc = 0 816 dst address difference: 4 dst len: 1996 817 src address difference: 4 src len: 0 818 UTF8: f1 80 80 bf 819 UTF16: d8c0 dc3f 820 cc = 0 821 dst address difference: 4 dst len: 1996 822 src address difference: 4 src len: 0 823 UTF8: f1 80 bf 80 824 UTF16: d8c3 dfc0 825 cc = 0 826 dst address difference: 4 dst len: 1996 827 src address difference: 4 src len: 0 828 UTF8: f1 80 bf bf 829 UTF16: d8c3 dfff 830 cc = 0 831 dst address difference: 4 dst len: 1996 832 src address difference: 4 src len: 0 833 UTF8: f1 bf 80 80 834 UTF16: d9bc dc00 835 cc = 0 836 dst address difference: 4 dst len: 1996 837 src address difference: 4 src len: 0 838 UTF8: f1 bf 80 bf 839 UTF16: d9bc dc3f 840 cc = 0 841 dst address difference: 4 dst len: 1996 842 src address difference: 4 src len: 0 843 UTF8: f1 bf bf 80 844 UTF16: d9bf dfc0 845 cc = 0 846 dst address difference: 4 dst len: 1996 847 src address difference: 4 src len: 0 848 UTF8: f1 bf bf bf 849 UTF16: d9bf dfff 850 cc = 0 851 dst address difference: 4 dst len: 1996 852 src address difference: 4 src len: 0 853 UTF8: f2 80 80 80 854 UTF16: d9c0 dc00 855 cc = 0 856 dst address difference: 4 dst len: 1996 857 src address difference: 4 src len: 0 858 UTF8: f2 80 80 bf 859 UTF16: d9c0 dc3f 860 cc = 0 861 dst address difference: 4 dst len: 1996 862 src address difference: 4 src len: 0 863 UTF8: f2 80 bf 80 864 UTF16: d9c3 dfc0 865 cc = 0 866 dst address difference: 4 dst len: 1996 867 src address difference: 4 src len: 0 868 UTF8: f2 80 bf bf 869 UTF16: d9c3 dfff 870 cc = 0 871 dst address difference: 4 dst len: 1996 872 src address difference: 4 src len: 0 873 UTF8: f2 bf 80 80 874 UTF16: dabc dc00 875 cc = 0 876 dst address difference: 4 dst len: 1996 877 src address difference: 4 src len: 0 878 UTF8: f2 bf 80 bf 879 UTF16: dabc dc3f 880 cc = 0 881 dst address difference: 4 dst len: 1996 882 src address difference: 4 src len: 0 883 UTF8: f2 bf bf 80 884 UTF16: dabf dfc0 885 cc = 0 886 dst address difference: 4 dst len: 1996 887 src address difference: 4 src len: 0 888 UTF8: f2 bf bf bf 889 UTF16: dabf dfff 890 cc = 0 891 dst address difference: 4 dst len: 1996 892 src address difference: 4 src len: 0 893 UTF8: f3 80 80 80 894 UTF16: dac0 dc00 895 cc = 0 896 dst address difference: 4 dst len: 1996 897 src address difference: 4 src len: 0 898 UTF8: f3 80 80 bf 899 UTF16: dac0 dc3f 900 cc = 0 901 dst address difference: 4 dst len: 1996 902 src address difference: 4 src len: 0 903 UTF8: f3 80 bf 80 904 UTF16: dac3 dfc0 905 cc = 0 906 dst address difference: 4 dst len: 1996 907 src address difference: 4 src len: 0 908 UTF8: f3 80 bf bf 909 UTF16: dac3 dfff 910 cc = 0 911 dst address difference: 4 dst len: 1996 912 src address difference: 4 src len: 0 913 UTF8: f3 bf 80 80 914 UTF16: dbbc dc00 915 cc = 0 916 dst address difference: 4 dst len: 1996 917 src address difference: 4 src len: 0 918 UTF8: f3 bf 80 bf 919 UTF16: dbbc dc3f 920 cc = 0 921 dst address difference: 4 dst len: 1996 922 src address difference: 4 src len: 0 923 UTF8: f3 bf bf 80 924 UTF16: dbbf dfc0 925 cc = 0 926 dst address difference: 4 dst len: 1996 927 src address difference: 4 src len: 0 928 UTF8: f3 bf bf bf 929 UTF16: dbbf dfff 930 cc = 0 931 dst address difference: 4 dst len: 1996 932 src address difference: 4 src len: 0 933 UTF8: f4 80 80 80 934 UTF16: dbc0 dc00 935 cc = 0 936 dst address difference: 4 dst len: 1996 937 src address difference: 4 src len: 0 938 UTF8: f4 80 80 bf 939 UTF16: dbc0 dc3f 940 cc = 0 941 dst address difference: 4 dst len: 1996 942 src address difference: 4 src len: 0 943 UTF8: f4 80 bf 80 944 UTF16: dbc3 dfc0 945 cc = 0 946 dst address difference: 4 dst len: 1996 947 src address difference: 4 src len: 0 948 UTF8: f4 80 bf bf 949 UTF16: dbc3 dfff 950 cc = 0 951 dst address difference: 4 dst len: 1996 952 src address difference: 4 src len: 0 953 UTF8: f4 8f 80 80 954 UTF16: dbfc dc00 955 cc = 0 956 dst address difference: 4 dst len: 1996 957 src address difference: 4 src len: 0 958 UTF8: f4 8f 80 bf 959 UTF16: dbfc dc3f 960 cc = 0 961 dst address difference: 4 dst len: 1996 962 src address difference: 4 src len: 0 963 UTF8: f4 8f bf 80 964 UTF16: dbff dfc0 965 cc = 0 966 dst address difference: 4 dst len: 1996 967 src address difference: 4 src len: 0 968 UTF8: f4 8f bf bf 969 UTF16: dbff dfff 970 cc = 0 971 dst address difference: 4 dst len: 1996 972 src address difference: 4 src len: 0 973 974 ----- Valid characters if m3 == 0 ----- 975 UTF8: f5 00 00 00 f6 11 22 33 f7 44 55 66 976 UTF16: d8c0 dc00 da06 dcb3 dad1 dd66 977 cc = 0 978 dst address difference: 12 dst len: 1988 979 src address difference: 12 src len: 0 980 981 ----- Invalid characters (2nd byte is invalid) ----- 982 UTF8: f0 8f 80 80 983 UTF16: dbfc dc00 984 cc = 0 985 dst address difference: 4 dst len: 1996 986 src address difference: 4 src len: 0 987 UTF8: f0 c0 80 80 988 UTF16: dbc0 dc00 989 cc = 0 990 dst address difference: 4 dst len: 1996 991 src address difference: 4 src len: 0 992 UTF8: f4 7f 80 80 993 UTF16: d8bc dc00 994 cc = 0 995 dst address difference: 4 dst len: 1996 996 src address difference: 4 src len: 0 997 UTF8: f4 90 80 80 998 UTF16: d800 dc00 999 cc = 0 1000 dst address difference: 4 dst len: 1996 1001 src address difference: 4 src len: 0 1002 UTF8: f1 7f 80 80 1003 UTF16: d9bc dc00 1004 cc = 0 1005 dst address difference: 4 dst len: 1996 1006 src address difference: 4 src len: 0 1007 UTF8: f1 c0 80 80 1008 UTF16: d8c0 dc00 1009 cc = 0 1010 dst address difference: 4 dst len: 1996 1011 src address difference: 4 src len: 0 1012 UTF8: f2 7f 80 80 1013 UTF16: dabc dc00 1014 cc = 0 1015 dst address difference: 4 dst len: 1996 1016 src address difference: 4 src len: 0 1017 UTF8: f2 c0 80 80 1018 UTF16: d9c0 dc00 1019 cc = 0 1020 dst address difference: 4 dst len: 1996 1021 src address difference: 4 src len: 0 1022 UTF8: f3 7f 80 80 1023 UTF16: dbbc dc00 1024 cc = 0 1025 dst address difference: 4 dst len: 1996 1026 src address difference: 4 src len: 0 1027 UTF8: f3 c0 80 80 1028 UTF16: dac0 dc00 1029 cc = 0 1030 dst address difference: 4 dst len: 1996 1031 src address difference: 4 src len: 0 1032 1033 ----- Invalid characters (3rd byte is invalid) ----- 1034 UTF8: f0 94 7f 80 1035 UTF16: d813 dfc0 1036 cc = 0 1037 dst address difference: 4 dst len: 1996 1038 src address difference: 4 src len: 0 1039 UTF8: f0 94 c0 80 1040 UTF16: d810 dc00 1041 cc = 0 1042 dst address difference: 4 dst len: 1996 1043 src address difference: 4 src len: 0 1044 UTF8: f1 84 7f 80 1045 UTF16: d8d3 dfc0 1046 cc = 0 1047 dst address difference: 4 dst len: 1996 1048 src address difference: 4 src len: 0 1049 UTF8: f1 84 c0 80 1050 UTF16: d8d0 dc00 1051 cc = 0 1052 dst address difference: 4 dst len: 1996 1053 src address difference: 4 src len: 0 1054 UTF8: f2 84 7f 80 1055 UTF16: d9d3 dfc0 1056 cc = 0 1057 dst address difference: 4 dst len: 1996 1058 src address difference: 4 src len: 0 1059 UTF8: f2 84 c0 80 1060 UTF16: d9d0 dc00 1061 cc = 0 1062 dst address difference: 4 dst len: 1996 1063 src address difference: 4 src len: 0 1064 UTF8: f3 84 7f 80 1065 UTF16: dad3 dfc0 1066 cc = 0 1067 dst address difference: 4 dst len: 1996 1068 src address difference: 4 src len: 0 1069 UTF8: f3 84 c0 80 1070 UTF16: dad0 dc00 1071 cc = 0 1072 dst address difference: 4 dst len: 1996 1073 src address difference: 4 src len: 0 1074 UTF8: f4 84 7f 80 1075 UTF16: dbd3 dfc0 1076 cc = 0 1077 dst address difference: 4 dst len: 1996 1078 src address difference: 4 src len: 0 1079 UTF8: f4 84 c0 80 1080 UTF16: dbd0 dc00 1081 cc = 0 1082 dst address difference: 4 dst len: 1996 1083 src address difference: 4 src len: 0 1084 1085 ----- Invalid characters (4th byte is invalid) ----- 1086 UTF8: f0 94 80 7f 1087 UTF16: d810 dc3f 1088 cc = 0 1089 dst address difference: 4 dst len: 1996 1090 src address difference: 4 src len: 0 1091 UTF8: f0 94 80 c0 1092 UTF16: d810 dc00 1093 cc = 0 1094 dst address difference: 4 dst len: 1996 1095 src address difference: 4 src len: 0 1096 UTF8: f1 84 80 7f 1097 UTF16: d8d0 dc3f 1098 cc = 0 1099 dst address difference: 4 dst len: 1996 1100 src address difference: 4 src len: 0 1101 UTF8: f1 84 80 c0 1102 UTF16: d8d0 dc00 1103 cc = 0 1104 dst address difference: 4 dst len: 1996 1105 src address difference: 4 src len: 0 1106 UTF8: f2 84 80 7f 1107 UTF16: d9d0 dc3f 1108 cc = 0 1109 dst address difference: 4 dst len: 1996 1110 src address difference: 4 src len: 0 1111 UTF8: f2 84 80 c0 1112 UTF16: d9d0 dc00 1113 cc = 0 1114 dst address difference: 4 dst len: 1996 1115 src address difference: 4 src len: 0 1116 UTF8: f3 84 80 7f 1117 UTF16: dad0 dc3f 1118 cc = 0 1119 dst address difference: 4 dst len: 1996 1120 src address difference: 4 src len: 0 1121 UTF8: f3 84 80 c0 1122 UTF16: dad0 dc00 1123 cc = 0 1124 dst address difference: 4 dst len: 1996 1125 src address difference: 4 src len: 0 1126 UTF8: f4 84 80 7f 1127 UTF16: dbd0 dc3f 1128 cc = 0 1129 dst address difference: 4 dst len: 1996 1130 src address difference: 4 src len: 0 1131 UTF8: f4 84 80 c0 1132 UTF16: dbd0 dc00 1133 cc = 0 1134 dst address difference: 4 dst len: 1996 1135 src address difference: 4 src len: 0 1136 1137 ----- Invalid 2nd char AND output exhausted ----- 1138 UTF8: f0 00 80 80 1139 UTF16: <none> 1140 cc = 1 1141 dst address difference: 0 dst len: 1 1142 src address difference: 0 src len: 4 1143 1144 ----- Invalid 3rd char AND output exhausted ----- 1145 UTF8: f0 aa 00 80 1146 UTF16: <none> 1147 cc = 1 1148 dst address difference: 0 dst len: 3 1149 src address difference: 0 src len: 4 1150 1151 ----- Invalid 4th char AND output exhausted ----- 1152 UTF8: f0 aa aa 00 1153 UTF16: <none> 1154 cc = 1 1155 dst address difference: 0 dst len: 3 1156 src address difference: 0 src len: 4 1157 1158 ----- 1st char valid, 2nd char invalid ----- 1159 UTF8: f0 aa aa aa f0 00 00 00 1160 UTF16: d86a deaa dbc0 dc00 1161 cc = 0 1162 dst address difference: 8 dst len: 1992 1163 src address difference: 8 src len: 0 1164 1165 ------------- test1 ---------------- 1166 UTF8: <none> 1167 UTF16: <none> 1168 cc = 0 1169 dst len: 0 1170 src len: 0 1171 1172 ------------- test2.1 ---------------- 1173 UTF8: <none> 1174 UTF16: <none> 1175 cc = 0 1176 dst address difference: 0 dst len: 2000 1177 src len: 0 1178 UTF8: <none> 1179 UTF16: <none> 1180 cc = 0 1181 dst address difference: 0 dst len: 2000 1182 src address difference: 0 src len: 0 1183 UTF8: <none> 1184 UTF16: <none> 1185 cc = 0 1186 dst address difference: 0 dst len: 2000 1187 src address difference: 0 src len: 0 1188 UTF8: c2 1189 UTF16: <none> 1190 cc = 0 1191 dst address difference: 0 dst len: 2000 1192 src address difference: 0 src len: 1 1193 UTF8: <none> 1194 UTF16: <none> 1195 cc = 0 1196 dst address difference: 0 dst len: 2000 1197 src address difference: 0 src len: 0 1198 UTF8: e1 1199 UTF16: <none> 1200 cc = 0 1201 dst address difference: 0 dst len: 2000 1202 src address difference: 0 src len: 1 1203 UTF8: e1 80 1204 UTF16: <none> 1205 cc = 0 1206 dst address difference: 0 dst len: 2000 1207 src address difference: 0 src len: 2 1208 UTF8: <none> 1209 UTF16: <none> 1210 cc = 0 1211 dst address difference: 0 dst len: 2000 1212 src address difference: 0 src len: 0 1213 UTF8: f4 1214 UTF16: <none> 1215 cc = 0 1216 dst address difference: 0 dst len: 2000 1217 src address difference: 0 src len: 1 1218 UTF8: f4 80 1219 UTF16: <none> 1220 cc = 0 1221 dst address difference: 0 dst len: 2000 1222 src address difference: 0 src len: 2 1223 UTF8: f4 80 80 1224 UTF16: <none> 1225 cc = 0 1226 dst address difference: 0 dst len: 2000 1227 src address difference: 0 src len: 3 1228 1229 ------------- test2.2 ---------------- 1230 UTF8: 00 01 1231 UTF16: 0000 0001 1232 cc = 0 1233 dst address difference: 4 dst len: 1996 1234 src address difference: 2 src len: 0 1235 UTF8: c2 80 c2 81 c2 1236 UTF16: 0080 0081 1237 cc = 0 1238 dst address difference: 4 dst len: 1996 1239 src address difference: 4 src len: 1 1240 UTF8: e1 80 80 e1 80 81 1241 UTF16: 1000 1001 1242 cc = 0 1243 dst address difference: 4 dst len: 1996 1244 src address difference: 6 src len: 0 1245 UTF8: f4 80 80 80 f4 80 80 81 f4 1246 UTF16: dbc0 dc00 dbc0 dc01 1247 cc = 0 1248 dst address difference: 8 dst len: 1992 1249 src address difference: 8 src len: 1 1250 1251 ------------- test3.1 ---------------- 1252 UTF8: 00 01 02 03 1253 UTF16: <none> 1254 cc = 1 1255 dst len: 0 1256 src address difference: 0 src len: 4 1257 UTF8: c2 80 c2 81 c2 82 c2 83 1258 UTF16: <none> 1259 cc = 1 1260 dst len: 0 1261 src address difference: 0 src len: 8 1262 UTF8: c2 80 c2 81 c2 82 c2 83 1263 UTF16: <none> 1264 cc = 1 1265 dst len: 1 1266 src address difference: 0 src len: 8 1267 UTF8: e1 80 80 e1 80 81 e1 80 82 e1 80 83 1268 UTF16: <none> 1269 cc = 1 1270 dst len: 0 1271 src address difference: 0 src len: 12 1272 UTF8: e1 80 80 e1 80 81 e1 80 82 e1 80 83 1273 UTF16: <none> 1274 cc = 1 1275 dst len: 1 1276 src address difference: 0 src len: 12 1277 UTF8: f4 80 80 80 f4 80 80 81 f4 80 80 82 f4 80 80 83 1278 UTF16: <none> 1279 cc = 1 1280 dst len: 0 1281 src address difference: 0 src len: 16 1282 UTF8: f4 80 80 80 f4 80 80 81 f4 80 80 82 f4 80 80 83 1283 UTF16: <none> 1284 cc = 1 1285 dst len: 1 1286 src address difference: 0 src len: 16 1287 UTF8: f4 80 80 80 f4 80 80 81 f4 80 80 82 f4 80 80 83 1288 UTF16: <none> 1289 cc = 1 1290 dst len: 2 1291 src address difference: 0 src len: 16 1292 UTF8: f4 80 80 80 f4 80 80 81 f4 80 80 82 f4 80 80 83 1293 UTF16: <none> 1294 cc = 1 1295 dst len: 3 1296 src address difference: 0 src len: 16 1297 1298 ------------- test3.2 ---------------- 1299 UTF8: 00 01 02 03 1300 UTF16: 0000 0001 1301 cc = 1 1302 dst address difference: 4 dst len: 0 1303 src address difference: 2 src len: 2 1304 UTF8: 00 01 02 03 c2 80 c2 81 1305 UTF16: 0000 0001 1306 cc = 1 1307 dst address difference: 4 dst len: 1 1308 src address difference: 2 src len: 6 1309 UTF8: 00 01 02 03 c2 80 c2 81 c2 82 c2 83 1310 UTF16: 0000 0001 0002 1311 cc = 1 1312 dst address difference: 6 dst len: 0 1313 src address difference: 3 src len: 9 1314 UTF8: 00 01 02 03 c2 80 c2 81 c2 82 c2 83 e1 80 80 e1 1315 UTF16: 0000 0001 0002 1316 cc = 1 1317 dst address difference: 6 dst len: 1 1318 src address difference: 3 src len: 13 1319 1320 ------------- test4 ---------------- 1321 UTF8: 01 c3 80 12 e1 90 93 23 f4 80 90 8a 34 c4 8c e1 91 94 c5 8a f4 80 90 8a c5 8a e1 91 94 f4 80 90 8a e1 91 94 1322 UTF16: 0001 00c0 0012 1413 0023 dbc1 dc0a 0034 010c 1454 014a dbc1 dc0a 014a 1454 dbc1 dc0a 1454 1323 cc = 0 1324 dst address difference: 36 dst len: 1964 1325 src address difference: 36 src len: 0 1326