diff --git a/iconvdata/Makefile b/iconvdata/Makefile
index 4ec2741cdc..6a02f227e0 100644
--- a/iconvdata/Makefile
+++ b/iconvdata/Makefile
@@ -178,8 +178,9 @@ generated-modules := $(gen-8bit-modules) $(gen-8bit-gap-modules) \
 		     $(gen-special-modules)
 
 generated += $(generated-modules:=.h) $(generated-modules:=.stmp) \
-	     iconv-test.out iconv-rules tst-loading.mtrace	 \
-	     mtrace-tst-loading.out tst-tables.out iconv-test.xxx
+	     iconv-test.out iconv-rules tst-loading.mtrace	  \
+	     mtrace-tst-loading.out tst-tables.out iconv-test.xxx \
+	     iconv-test.yyy
 ifdef objpfx
 generated += gconv-modules
 endif
@@ -324,8 +325,11 @@ $(objpfx)bug-iconv12.out: $(objpfx)gconv-modules \
 
 $(objpfx)iconv-test.out: run-iconv-test.sh $(objpfx)gconv-modules \
 			 $(addprefix $(objpfx),$(modules.so)) \
-			 $(common-objdir)/iconv/iconv_prog TESTS
+			 $(common-objdir)/iconv/iconv_prog iconv-test1.in \
+			 iconv-test2.in
 	iconv_modules="$(modules)" \
+	iconv_test1="iconv-test1.in" \
+	iconv_test2="iconv-test2.in" \
 	$(SHELL) $< $(common-objdir) '$(test-wrapper-env)' \
 		 '$(run-program-env)' > $@; \
 	$(evaluate-test)
diff --git a/iconvdata/TESTS b/iconvdata/iconv-test1.in
similarity index 100%
rename from iconvdata/TESTS
rename to iconvdata/iconv-test1.in
diff --git a/iconvdata/TESTS2 b/iconvdata/iconv-test2.in
similarity index 100%
rename from iconvdata/TESTS2
rename to iconvdata/iconv-test2.in
diff --git a/iconvdata/run-iconv-test.sh b/iconvdata/run-iconv-test.sh
index 56b6630a6d..e337146af7 100755
--- a/iconvdata/run-iconv-test.sh
+++ b/iconvdata/run-iconv-test.sh
@@ -23,6 +23,10 @@ set -e
 codir=$1
 test_wrapper_env="$2"
 run_program_env="$3"
+# Additionally we get as input the following environment variables:
+# iconv_modules: The list of modules to test.
+# iconv_test1: The input data for the first test.
+# iconv_test2: The input data for the second test.
 
 # We use always the same temporary file.
 temp1=$codir/iconvdata/iconv-test.xxx
@@ -45,9 +49,10 @@ else
   ac_n= ac_c='\c' ac_t=
 fi
 
-# We read the file named TESTS.  All non-empty lines not starting with
+# We read the file named ICONV_TEST1.  All non-empty lines not starting with
 # `#' are interpreted as commands.
 failed=0
+echo "Reading $iconv_tests and running tests:"
 while read from to subset targets; do
   # Ignore empty and comment lines.
   if test -z "$subset" || test "$from" = '#'; then continue; fi
@@ -57,91 +62,179 @@ while read from to subset targets; do
 
   if test -n "$targets"; then
     for t in $targets; do
+      # Test 1a: Convert data using iconv internally.
       if test -f testdata/$from; then
 	echo $ac_n "   test data: $from -> $t $ac_c"
+
+	# Convert the test data using iconv DSOs.
 	$PROG -f $from -t $t testdata/$from < /dev/null > $temp1 ||
 	  { if test $? -gt 128; then exit 1; fi
 	    echo "FAILED"; failed=1; continue; }
+
+	# Conversion succeeded.
 	echo $ac_n "OK$ac_c"
+
+	# Compare converted data to expected data.
 	if test -s testdata/$from..$t; then
 	  LC_ALL=C cmp $temp1 testdata/$from..$t > /dev/null 2>&1 ||
 	    { echo "/FAILED"; failed=1; continue; }
 	  echo $ac_n "/OK$ac_c"
 	fi
+
+	# Conversion *and* comparison succeeded.
 	echo $ac_n " -> $from $ac_c"
+
+	# Convert in the opposite direction.
 	$PROG -f $t -t $to -o $temp2 $temp1 < /dev/null ||
 	  { if test $? -gt 128; then exit 1; fi
 	    echo "FAILED"; failed=1; continue; }
+
+	# Conversion succeeded.
 	echo $ac_n "OK$ac_c"
+
+	# Compare converted data to expected data.
 	test -s $temp1 &&
 	LC_ALL=C cmp testdata/$from $temp2 > /dev/null 2>&1 ||
 	  { echo "/FAILED"; failed=1; continue; }
+
+	# Conversion *and* comparison succeeded in both directions.
 	echo "/OK"
+	# Cleanup test.
 	rm -f $temp1 $temp2
+
       fi
 
-      # Now test some bigger text, entirely in ASCII.  If ASCII is no subset
+      # Test 1b: Convert "The Art of War" (larger text) [ASCII subset]
+      #
+      # Now test some bigger text, entirely in ASCII.  If ASCII is not a subset
       # of the coded character set we convert the text to this coded character
       # set.  Otherwise we convert to all the TARGETS.
       if test $subset = Y; then
 	echo $ac_n "      suntzu: $from -> $t -> $to $ac_c"
+
+	# Convert test data to target and back.
 	$PROG -f $from -t $t testdata/suntzus < /dev/null |
 	$PROG -f $t -t $to > $temp1 ||
 	  { if test $? -gt 128; then exit 1; fi
 	    echo "FAILED"; failed=1; continue; }
+
+	# Conversion succeeded.
 	echo $ac_n "OK$ac_c"
+
+	# Compare against expected data.
 	LC_ALL=C cmp testdata/suntzus $temp1 ||
 	  { echo "/FAILED"; failed=1; continue; }
+
+	# Conversion *and* comparison succeeded.
 	echo "/OK"
+	# Cleanup test.
+	rm -f $temp1
       fi
-      rm -f $temp1
-
-      # And tests where iconv(1) has to handle charmaps.
-      if test "$t" = UTF8; then tc=UTF-8; else tc="$t"; fi
-      if test -f ../localedata/charmaps/$from &&
-         test -f ../localedata/charmaps/$tc &&
-	 test -f testdata/$from &&
-	 ! grep '<U....><U....>' ../localedata/charmaps/$from > /dev/null; then
+
+      # Test 1c: Convert using charmaps.
+      #
+      # And tests where iconv(1) has to handle charmaps:
+      # We exclude charmaps that have many-to-one mappings, which today is
+      # TSCII, SHIFT_SJISX0213, BIG5HKSCS, and EUC-JISX0213.  We exclude them
+      # because such mappings make the there-and-back conversion tests
+      # difficult.  All of these charmaps have commented out entries or
+      # valid entries for their many-to-one conversions e.g.
+      # '% <U0B9C><U0BC1> /x83/xa4 TAMIL GLYPH JU' (TSCII)
+      # or '% <U304B><U309A> /x82/xf5' (SHIFT_JISX0213).
+      # We could test them but it would require splitting the data files out
+      # into those that can be handled by charmap conversions versus those
+      # that can only be handled by iconv conversion (the larger set).
+
+      # Some charsets need to be converted to special charmap names.
+      tc="$t";
+      fromc="$from";
+      if test "$t" = UTF8; then tc=UTF-8; fi
+      if test "$from" = BIG5HKSCS; then fromc=BIG5-HKSCS; fi
+
+      # Run the charmap tests:
+      if test -f ../localedata/charmaps/$fromc \
+	 && test -f ../localedata/charmaps/$tc \
+	 && test -f testdata/$from \
+	 && test "$from" != "BIG5HKSCS" \
+	 && test "$from" != "EUC-JISX0213" \
+	 && test "$from" != "SHIFT_JISX0213" \
+	 && test "$from" != "TSCII"; then
+
+	# Identify the the FROM and TO charmaps.
 	echo $ac_n "test charmap: $from -> $t $ac_c"
-	$PROG -f ../localedata/charmaps/$from -t ../localedata/charmaps/$tc \
-	      testdata/$from < /dev/null > $temp1 ||
+
+	# Convert from FROM to TO using the initial data in testdata/FROM
+	# and storing in $temp1.
+	$PROG -f ../localedata/charmaps/$fromc -t ../localedata/charmaps/$tc \
+	  testdata/$from < /dev/null > $temp1 ||
 	  { if test $? -gt 128; then exit 1; fi
 	    echo "FAILED"; failed=1; continue; }
+
+	# The conversion from FROM to TO of the testdata/FROM succeeded.
 	echo $ac_n "OK$ac_c"
+
+	# If testdata/FROM..TO exists then we compare the generated output
+	# in $temp1 to the the expected output in FROM..TO.
 	if test -s testdata/$from..$t; then
 	  LC_ALL=C cmp $temp1 testdata/$from..$t > /dev/null 2>&1 ||
 	    { echo "/FAILED"; failed=1; continue; }
+
+	  # The comparison to expected output succeeded.
 	  echo $ac_n "/OK$ac_c"
 	fi
+
+	# Conversion *and* the comparison succeeded.
 	echo $ac_n " -> $from $ac_c"
+
+	# Run the conversion from TO to FROM (backwards) storing in $temp2.
 	$PROG -t ../localedata/charmaps/$from -f ../localedata/charmaps/$tc \
 	      -o $temp2 $temp1 < /dev/null ||
 	  { if test $? -gt 128; then exit 1; fi
 	    echo "FAILED"; failed=1; continue; }
+
+	# Conversion succeeded.
 	echo $ac_n "OK$ac_c"
+
+	# Compare the expected data with the converted data.
 	test -s $temp1 &&
 	LC_ALL=C cmp testdata/$from $temp2 > /dev/null 2>&1 ||
 	  { echo "/FAILED"; failed=1; continue; }
+
+	# We succeeded in converting to the target charmap and back
+	# again and both directions worked and the data matched.
 	echo "/OK"
+
+	# Cleanup test.
 	rm -f $temp1 $temp2
       fi
     done
   fi
 
+  # Test 1b: Convert "The Art of War" (larger text) [Non-ASCII subset]
   if test "$subset" = N; then
     echo $ac_n "      suntzu: ASCII -> $to -> ASCII $ac_c"
+
+    # Convert only from ASCII to target and back to ASCII.
     $PROG -f ASCII -t $to testdata/suntzus < /dev/null |
     $PROG -f $to -t ASCII > $temp1 ||
       { if test $? -gt 128; then exit 1; fi
 	echo "FAILED"; failed=1; continue; }
+
+    # Conversion succeeded.
     echo $ac_n "OK$ac_c"
+
+    # Compare against expected ASCII data.
     LC_ALL=C cmp testdata/suntzus $temp1 ||
       { echo "/FAILED"; failed=1; continue; }
+
+    # Conversion *and* comparison succeeded.
     echo "/OK"
+    # Cleanup test.
+    rm -f $temp1
   fi
-done < TESTS
+done < "$iconv_test1"
 
-# We read the file named TESTS2.  All non-empty lines not starting with
+# We read the file named ICONV_TEST2.  All non-empty lines not starting with
 # `#' are interpreted as commands.
 while read utf8 from filename; do
   # Ignore empty and comment lines.
@@ -182,7 +275,7 @@ while read utf8 from filename; do
     { echo "/FAILED"; failed=1; continue; }
   echo "OK"
 
-done < TESTS2
+done < "$iconv_test2"
 
 # Check for crashes in decoders.
 printf '\016\377\377\377\377\377\377\377' > $temp1
diff --git a/localedata/charmaps/BIG5 b/localedata/charmaps/BIG5
index 50f5f16cd2..b552e43763 100644
--- a/localedata/charmaps/BIG5
+++ b/localedata/charmaps/BIG5
@@ -19,6 +19,9 @@
 %     /xa2/xcc, /xa2/xce, /xf9/xe9, /xf9/xea, /xf9/xeb,
 %     /xf9/xf9, /xf9/xfa, /xf9/xfb, /xf9/xfc, /xf9/xfd
 %
+% The %IRREVERSIBLE% markup is used to generate the data used by iconv.
+% Please do not remove the %IRREVERSIBLE% markup.
+%
 % alias BIG5-CP950
 
 CHARMAP
@@ -417,8 +420,10 @@ CHARMAP
 <U3027>		/xa2/xc9	HANGZHOU NUMERAL SEVEN
 <U3028>		/xa2/xca	HANGZHOU NUMERAL EIGHT
 <U3029>		/xa2/xcb	HANGZHOU NUMERAL NINE
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U5341>		/xa2/xcc	<CJK>
 <U5344>		/xa2/xcd	<CJK>
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U5345>		/xa2/xce	<CJK>
 <UFF21>		/xa2/xcf	FULLWIDTH LATIN CAPITAL LETTER A
 <UFF22>		/xa2/xd0	FULLWIDTH LATIN CAPITAL LETTER B
@@ -14050,6 +14055,7 @@ CHARMAP
 <U2552>		/xf9/xe6	BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
 <U2564>		/xf9/xe7	BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
 <U2555>		/xf9/xe8	BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U255E>		/xf9/xe9	BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
 %IRREVERSIBLE%<U256A>		/xf9/xea	BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
 %IRREVERSIBLE%<U2561>		/xf9/xeb	BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
@@ -14066,6 +14072,7 @@ CHARMAP
 <U2568>		/xf9/xf6	BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
 <U255C>		/xf9/xf7	BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
 <U2551>		/xf9/xf8	BOX DRAWINGS DOUBLE VERTICAL
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U2550>		/xf9/xf9	BOX DRAWINGS DOUBLE HORIZONTAL
 %IRREVERSIBLE%<U256D>		/xf9/xfa	BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
 %IRREVERSIBLE%<U256E>		/xf9/xfb	BOX DRAWINGS LIGHT ARC DOWN AND LEFT
diff --git a/localedata/charmaps/BIG5-HKSCS b/localedata/charmaps/BIG5-HKSCS
index 0735efc5c8..3489654fb2 100644
--- a/localedata/charmaps/BIG5-HKSCS
+++ b/localedata/charmaps/BIG5-HKSCS
@@ -10,6 +10,12 @@
 % Last updated from the HKSCS-2008 standard
 % http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/e_hkscs_2008.pdf
 %
+% The latest available standard is HKSCS-2016 which has not yet been applied
+% https://www.ogcio.gov.hk/en/our_work/business/tech_promotion/ccli/terms/doc/e_hkscs_2016.pdf
+%
+% The %IRREVERSIBLE% markup is used to generate the data used by iconv.
+% Please do not remove the %IRREVERSIBLE% markup.
+%
 
 CHARMAP
 <U0000>     /x00         NULL
@@ -300,8 +306,31 @@ CHARMAP
 <U00D3>     /x88/x5f     LATIN CAPITAL LETTER O WITH ACUTE
 <U01D1>     /x88/x60     LATIN CAPITAL LETTER O WITH CARON
 <U00D2>     /x88/x61     LATIN CAPITAL LETTER O WITH GRAVE
+%
+% BIG5-HKSCS has 4 mappings that cannot be represented in a normal
+% character map. For BIG5-HKSCS 2008 (Amd. 1 to Amd. 6) they are:
+% /x88/x62 => <U00CA><U0304>
+% /x88/x64 => <U00CA><U030C>
+% /x88/xa3 => <U00EA><U0304>
+% /x88/xa5 => <U00EA><U030C>
+%
+% These mappings are noted in BIG5-HKSCS 2016 standard as documented in the
+% initial comments.
+%
+% These mappings cannot be represented in a traditional POSIX character map
+% which has no way to indicate that a sequence of multi-byte characters
+% generates multiple wide characters.  Therefore we document them here but do
+% not include them. Note that iconv is capable of and supports such
+% conversions, but iconv when run with character maps as from-encoding or
+% to-encoding is unable to support such conversions.
+%
+% Note that iconv is capable of and supports such conversions, but iconv
+% when run with character maps as from-encoding or to-encoding is unable
+% to support such conversions.
+
 %<U00CA><U0304>     /x88/x62
 <U1EBE>     /x88/x63     LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+% See note above.
 %<U00CA><U030C>     /x88/x64
 <U1EC0>     /x88/x65     LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
 <U00CA>     /x88/x66     LATIN CAPITAL LETTER E WITH CIRCUMFLEX
@@ -331,8 +360,10 @@ CHARMAP
 <U01DA>     /x88/x7e     LATIN SMALL LETTER U WITH DIAERESIS AND CARON
 <U01DC>     /x88/xa1     LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
 <U00FC>     /x88/xa2     LATIN SMALL LETTER U WITH DIAERESIS
+% See note above.
 %<U00EA><U0304>     /x88/xa3
 <U1EBF>     /x88/xa4     LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+% See note above.
 %<U00EA><U030C>     /x88/xa5
 <U1EC1>     /x88/xa6     LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
 <U00EA>     /x88/xa7     LATIN SMALL LETTER E WITH CIRCUMFLEX
@@ -4201,6 +4232,7 @@ CHARMAP
 <U2510>     /xa2/x7b     BOX DRAWINGS LIGHT DOWN AND LEFT
 <U2514>     /xa2/x7c     BOX DRAWINGS LIGHT UP AND RIGHT
 <U2518>     /xa2/x7d     BOX DRAWINGS LIGHT UP AND LEFT
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U256D>     /xa2/x7e     BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
 %IRREVERSIBLE%<U256E>     /xa2/xa1     BOX DRAWINGS LIGHT ARC DOWN AND LEFT
 %IRREVERSIBLE%<U2570>     /xa2/xa2     BOX DRAWINGS LIGHT ARC UP AND RIGHT
diff --git a/localedata/charmaps/EUC-JP-MS b/localedata/charmaps/EUC-JP-MS
index 6b1c9e4733..9fd1139ea4 100644
--- a/localedata/charmaps/EUC-JP-MS
+++ b/localedata/charmaps/EUC-JP-MS
@@ -839,16 +839,19 @@ CHARMAP
 <U337E>     /xad/xed     SQUARE ERA NAME MEIZI
 <U337D>     /xad/xee     SQUARE ERA NAME TAISYOU
 <U337C>     /xad/xef     SQUARE ERA NAME SYOUWA
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U2252>     /xad/xf0     APPROXIMATELY EQUAL TO OR THE IMAGE OF
 %IRREVERSIBLE%<U2261>     /xad/xf1     IDENTICAL TO
 %IRREVERSIBLE%<U222B>     /xad/xf2     INTEGRAL
 <U222E>     /xad/xf3     CONTOUR INTEGRAL
 <U2211>     /xad/xf4     N-ARY SUMMATION
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U221A>     /xad/xf5     SQUARE ROOT
 %IRREVERSIBLE%<U22A5>     /xad/xf6     UP TACK
 %IRREVERSIBLE%<U2220>     /xad/xf7     ANGLE
 <U221F>     /xad/xf8     RIGHT ANGLE
 <U22BF>     /xad/xf9     RIGHT TRIANGLE
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U2235>     /xad/xfa     BECAUSE
 %IRREVERSIBLE%<U2229>     /xad/xfb     INTERSECTION
 %IRREVERSIBLE%<U222A>     /xad/xfc     UNION
@@ -8163,6 +8166,7 @@ CHARMAP
 <U00AF>     /x8f/xa2/xb4     MACRON
 <U02DB>     /x8f/xa2/xb5     OGONEK
 <U02DA>     /x8f/xa2/xb6     RING ABOVE
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<UFF5E>     /x8f/xa2/xb7     FULLWIDTH TILDE
 <U0384>     /x8f/xa2/xb8     GREEK TONOS
 <U0385>     /x8f/xa2/xb9     GREEK DIALYTIKA TONOS
@@ -8175,6 +8179,7 @@ CHARMAP
 <U00AE>     /x8f/xa2/xee     REGISTERED SIGN
 <U2122>     /x8f/xa2/xef     TRADE MARK SIGN
 <U00A4>     /x8f/xa2/xf0     CURRENCY SIGN
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U2116>     /x8f/xa2/xf1     NUMERO SIGN
 <U0386>     /x8f/xa6/xe1     GREEK CAPITAL LETTER ALPHA WITH TONOS
 <U0388>     /x8f/xa6/xe2     GREEK CAPITAL LETTER EPSILON WITH TONOS
@@ -14232,6 +14237,7 @@ CHARMAP
 <U2177>     /x8f/xf3/xfa     SMALL ROMAN NUMERAL EIGHT
 <U2178>     /x8f/xf3/xfb     SMALL ROMAN NUMERAL NINE
 <U2179>     /x8f/xf3/xfc     SMALL ROMAN NUMERAL TEN
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U2160>     /x8f/xf3/xfd     ROMAN NUMERAL ONE
 %IRREVERSIBLE%<U2161>     /x8f/xf3/xfe     ROMAN NUMERAL TWO
 %IRREVERSIBLE%<U2162>     /x8f/xf4/xa1     ROMAN NUMERAL THREE
@@ -14244,6 +14250,7 @@ CHARMAP
 %IRREVERSIBLE%<U2169>     /x8f/xf4/xa8     ROMAN NUMERAL TEN
 <UFF07>     /x8f/xf4/xa9     FULLWIDTH APOSTROPHE
 <UFF02>     /x8f/xf4/xaa     FULLWIDTH QUOTATION MARK
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U3231>     /x8f/xf4/xab     PARENTHESIZED IDEOGRAPH STOCK
 %IRREVERSIBLE%<U2116>     /x8f/xf4/xac     NUMERO SIGN
 %IRREVERSIBLE%<U2121>     /x8f/xf4/xad     TELEPHONE SIGN
diff --git a/localedata/charmaps/EUC-TW b/localedata/charmaps/EUC-TW
index c9c9cdd82a..a3adf38347 100644
--- a/localedata/charmaps/EUC-TW
+++ b/localedata/charmaps/EUC-TW
@@ -6009,6 +6009,7 @@ CHARMAP
 %
 % CNS 11643-1992 Plane 1 again
 %
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U3000>     /x8e/xa1/xa1/xa1 IDEOGRAPHIC SPACE
 %IRREVERSIBLE%<UFF0C>     /x8e/xa1/xa1/xa2 FULLWIDTH COMMA
 %IRREVERSIBLE%<U3001>     /x8e/xa1/xa1/xa3 IDEOGRAPHIC COMMA
diff --git a/localedata/charmaps/IBM1132 b/localedata/charmaps/IBM1132
index 948d5a4416..6154070aef 100644
--- a/localedata/charmaps/IBM1132
+++ b/localedata/charmaps/IBM1132
@@ -115,6 +115,7 @@ CHARMAP
 <U005F>     /x6d         LOW LINE
 <U003E>     /x6e         GREATER-THAN SIGN
 <U003F>     /x6f         QUESTION MARK
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U006B>     /x70         LATIN SMALL LETTER K
 <U0EA3>     /x72         LAO LETTER LO LING
 <U0EA5>     /x73         LAO LETTER LO LOOT
diff --git a/localedata/charmaps/IBM1133 b/localedata/charmaps/IBM1133
index a4848439db..cbe09214c3 100644
--- a/localedata/charmaps/IBM1133
+++ b/localedata/charmaps/IBM1133
@@ -219,6 +219,7 @@ CHARMAP
 <U0EC6>     /xdb         LAO KO LA
 <U0EDC>     /xdd         LAO HO NO
 <U0EDD>     /xde         LAO HO MO
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U006B>     /xdf         LATIN SMALL LETTER K
 <U0ED0>     /xf0         LAO DIGIT ZERO
 <U0ED1>     /xf1         LAO DIGIT ONE
diff --git a/localedata/charmaps/IBM1160 b/localedata/charmaps/IBM1160
index 646b921133..cce874f921 100644
--- a/localedata/charmaps/IBM1160
+++ b/localedata/charmaps/IBM1160
@@ -85,6 +85,7 @@ CHARMAP
 <U002B>     /x4e         PLUS SIGN
 <U007C>     /x4f         VERTICAL LINE
 <U0026>     /x50         AMPERSAND
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U0E48>     /x51         THAI CHARACTER MAI EK
 <U0E08>     /x52         THAI CHARACTER CHO CHAN
 <U0E09>     /x53         THAI CHARACTER CHO CHING
@@ -206,6 +207,7 @@ CHARMAP
 <U0047>     /xc7         LATIN CAPITAL LETTER G
 <U0048>     /xc8         LATIN CAPITAL LETTER H
 <U0049>     /xc9         LATIN CAPITAL LETTER I
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U0E49>     /xca         THAI CHARACTER MAI THO
 <U0E35>     /xcb         THAI CHARACTER SARA II
 <U0E36>     /xcc         THAI CHARACTER SARA UE
@@ -229,6 +231,7 @@ CHARMAP
 <U0E43>     /xde         THAI CHARACTER SARA AI MAIMUAN
 <U0E44>     /xdf         THAI CHARACTER SARA AI MAIMALAI
 <U005C>     /xe0         REVERSE SOLIDUS
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U0E4A>     /xe1         THAI CHARACTER MAI TRI
 <U0053>     /xe2         LATIN CAPITAL LETTER S
 <U0054>     /xe3         LATIN CAPITAL LETTER T
@@ -257,6 +260,7 @@ CHARMAP
 <U0E4B>     /xfa         THAI CHARACTER MAI CHATTAWA
 <U0E4C>     /xfb         THAI CHARACTER THANTHAKHAT
 <U0E4D>     /xfc         THAI CHARACTER NIKHAHIT
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U0E4B>     /xfd         THAI CHARACTER MAI CHATTAWA
 <U20AC>     /xfe         EURO SIGN
 <U009F>     /xff         <control>
diff --git a/localedata/charmaps/IBM1161 b/localedata/charmaps/IBM1161
index 9340ba141b..52337c6117 100644
--- a/localedata/charmaps/IBM1161
+++ b/localedata/charmaps/IBM1161
@@ -132,6 +132,7 @@ CHARMAP
 <U007D>     /x7d         RIGHT CURLY BRACKET
 <U007E>     /x7e         TILDE
 <U001A>     /x7f         <control>
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U0E48>     /xa0         THAI CHARACTER MAI EK
 <U0E01>     /xa1         THAI CHARACTER KO KAI
 <U0E02>     /xa2         THAI CHARACTER KHO KHAI
@@ -191,6 +192,7 @@ CHARMAP
 <U0E38>     /xd8         THAI CHARACTER SARA U
 <U0E39>     /xd9         THAI CHARACTER SARA UU
 <U0E3A>     /xda         THAI CHARACTER PHINTHU
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U0E49>     /xdb         THAI CHARACTER MAI THO
 %IRREVERSIBLE%<U0E4A>     /xdc         THAI CHARACTER MAI TRI
 %IRREVERSIBLE%<U0E4B>     /xdd         THAI CHARACTER MAI CHATTAWA
diff --git a/localedata/charmaps/TSCII b/localedata/charmaps/TSCII
index 9646f326cb..3d9ae1fb5e 100644
--- a/localedata/charmaps/TSCII
+++ b/localedata/charmaps/TSCII
@@ -2,8 +2,26 @@
 <comment_char> %
 <escape_char> /
 <mb_cur_min> 1
-<mb_cur_max> 1
-% based on TSCII version 1.7
+<mb_cur_max> 3
+
+% Tamil Script Code for Information Interchange
+%
+% Based on TSCII version 1.7
+%
+% The lower 128 code points are ASCII, but the upper code points are
+% TSCII characters that often map to multiple Unicode code points.  The
+% one-to-many mapping means that much of the character map is commented
+% out since we don't support many-to-one mappings in POSIX-compatible
+% character maps.  There are 179 such mappings where one encoded TSCII
+% character is mapped to more than one Unicode code point.
+%
+% Note that iconv is capable of and supports such conversions, but iconv
+% when run with character maps as from-encoding or to-encoding is unable
+% to support such conversions.
+%
+% For conversion reference:
+% https://www.unicode.org/notes/tn15/Tscii2Unicode2.pdf
+%
 
 CHARMAP
 <U0000>                      /x00         NULL
@@ -134,27 +152,30 @@ CHARMAP
 <U007D>                      /x7d         RIGHT CURLY BRACKET
 <U007E>                      /x7e         TILDE
 <U007F>                      /x7f         DELETE
-<U0BE6>                      /x80         TAMIL DIGIT ZERO (currently unassigned)
+<U0BE6>                      /x80         TAMIL DIGIT ZERO (Since Unicode 4.1)
 <U0BE7>                      /x81         TAMIL DIGIT ONE
-<U0BB8><U0BCD><U0BB0><U0BC0> /x82         TAMIL GLYPH SRI
+% Note: Prior to Unicode 4.1 the SRI ligature was:
+% <U0BB8><U0BCD><U0BB0><U0BC0>,
+% but since Unicode 4.1 the SRI ligature should start with <U0BB6>.
+% <U0BB6><U0BCD><U0BB0><U0BC0> /x82         TAMIL GLYPH SRI
 <U0B9C>                      /x83         TAMIL LETTER JA
-<U0B9C><U0BC1>               /x83/xa4     TAMIL GLYPH JU
-<U0B9C><U0BC2>               /x83/xa5     TAMIL GLYPH JUU
+% <U0B9C><U0BC1>               /x83/xa4     TAMIL GLYPH JU
+% <U0B9C><U0BC2>               /x83/xa5     TAMIL GLYPH JUU
 <U0BB7>                      /x84         TAMIL LETTER SSA
-<U0BB7><U0BC1>               /x84/xa4     TAMIL GLYPH SSU
-<U0BB7><U0BC2>               /x84/xa5     TAMIL GLYPH SSUU
+% <U0BB7><U0BC1>               /x84/xa4     TAMIL GLYPH SSU
+% <U0BB7><U0BC2>               /x84/xa5     TAMIL GLYPH SSUU
 <U0BB8>                      /x85         TAMIL LETTER SA
 <U0BB9>                      /x86         TAMIL LETTER HA
-<U0B95><U0BCD><U0BB7>        /x87         TAMIL GLYPH KSHA
-<U0B9C><U0BCD>               /x88         TAMIL GLYPH J
-<U0BB7><U0BCD>               /x89         TAMIL GLYPH SS
-<U0BB8><U0BCD>               /x8a         TAMIL GLYPH S
-<U0BB8><U0BC1>               /x8a/xa4     TAMIL GLYPH SU
-<U0BB8><U0BC2>               /x8a/xa5     TAMIL GLYPH SUU
-<U0BB9><U0BCD>               /x8b         TAMIL GLYPH H
-<U0BB9><U0BC1>               /x8b/xa4     TAMIL GLYPH HU
-<U0BB9><U0BC2>               /x8b/xa5     TAMIL GLYPH HUU
-<U0B95><U0BCD><U0BB7><U0BCD> /x8c         TAMIL GLYPH KSH
+% <U0B95><U0BCD><U0BB7>        /x87         TAMIL GLYPH KSHA
+% <U0B9C><U0BCD>               /x88         TAMIL GLYPH J
+% <U0BB7><U0BCD>               /x89         TAMIL GLYPH SS
+% <U0BB8><U0BCD>               /x8a         TAMIL GLYPH S
+% <U0BB8><U0BC1>               /x8a/xa4     TAMIL GLYPH SU
+% <U0BB8><U0BC2>               /x8a/xa5     TAMIL GLYPH SUU
+% <U0BB9><U0BCD>               /x8b         TAMIL GLYPH H
+% <U0BB9><U0BC1>               /x8b/xa4     TAMIL GLYPH HU
+% <U0BB9><U0BC2>               /x8b/xa5     TAMIL GLYPH HUU
+% <U0B95><U0BCD><U0BB7><U0BCD> /x8c         TAMIL GLYPH KSH
 <U0BE8>                      /x8d         TAMIL DIGIT TWO
 <U0BE9>                      /x8e         TAMIL DIGIT THREE
 <U0BEA>                      /x8f         TAMIL DIGIT FOUR
@@ -167,10 +188,10 @@ CHARMAP
 <U0BED>                      /x96         TAMIL DIGIT SEVEN
 <U0BEE>                      /x97         TAMIL DIGIT EIGHT
 <U0BEF>                      /x98         TAMIL DIGIT NINE
-<U0B99><U0BC1>               /x99         TAMIL GLYPH NGU
-<U0B9E><U0BC1>               /x9a         TAMIL GLYPH NYU
-<U0B99><U0BC2>               /x9b         TAMIL GLYPH NGUU
-<U0B9E><U0BC2>               /x9c         TAMIL GLYPH NYUU
+% <U0B99><U0BC1>               /x99         TAMIL GLYPH NGU
+% <U0B9E><U0BC1>               /x9a         TAMIL GLYPH NYU
+% <U0B99><U0BC2>               /x9b         TAMIL GLYPH NGUU
+% <U0B9E><U0BC2>               /x9c         TAMIL GLYPH NYUU
 <U0BF0>                      /x9d         TAMIL NUMBER TEN
 <U0BF1>                      /x9e         TAMIL NUMBER ONE HUNDRED
 <U0BF2>                      /x9f         TAMIL NUMBER ONE THOUSAND
@@ -180,124 +201,136 @@ CHARMAP
 <U0BC1>                      /xa4         TAMIL VOWEL SIGN U
 <U0BC2>                      /xa5         TAMIL VOWEL SIGN UU
 <U0BC6>                      /xa6         TAMIL VOWEL SIGN E
-<U0BCA>                      /xa6/xa1     TAMIL VOWEL SIGN O
-<U0B95><U0BC6>               /xa6/xb8     TAMIL GLYPH KE
-<U0B95><U0BCA>               /xa6/xb8/xa1 TAMIL GLYPH KAI
-<U0B99><U0BC6>               /xa6/xb9     TAMIL GLYPH NGE
-<U0B99><U0BCA>               /xa6/xb9/xa1 TAMIL GLYPH NGAI
-<U0B9A><U0BC6>               /xa6/xba     TAMIL GLYPH CE
-<U0B9A><U0BCA>               /xa6/xba/xa1 TAMIL GLYPH CAI
-<U0B9E><U0BC6>               /xa6/xbb     TAMIL GLYPH NYE
-<U0B9E><U0BCA>               /xa6/xbb/xa1 TAMIL GLYPH NYAI
-<U0B9F><U0BC6>               /xa6/xbc     TAMIL GLYPH TTE
-<U0B9F><U0BCA>               /xa6/xbc/xa1 TAMIL GLYPH TTAI
-<U0BA3><U0BC6>               /xa6/xbd     TAMIL GLYPH NNE
-<U0BA3><U0BCA>               /xa6/xbd/xa1 TAMIL GLYPH NNAI
-<U0BA4><U0BC6>               /xa6/xbe     TAMIL GLYPH TE
-<U0BA4><U0BCA>               /xa6/xbe/xa1 TAMIL GLYPH TAI
-<U0BA8><U0BC6>               /xa6/xbf     TAMIL GLYPH NE
-<U0BA8><U0BCA>               /xa6/xbf/xa1 TAMIL GLYPH NAI
-<U0BAA><U0BC6>               /xa6/xc0     TAMIL GLYPH PE
-<U0BAA><U0BCA>               /xa6/xc0/xa1 TAMIL GLYPH PAI
-<U0BAE><U0BC6>               /xa6/xc1     TAMIL GLYPH ME
-<U0BAE><U0BCA>               /xa6/xc1/xa1 TAMIL GLYPH MAI
-<U0BAF><U0BC6>               /xa6/xc2     TAMIL GLYPH YE
-<U0BAF><U0BCA>               /xa6/xc2/xa1 TAMIL GLYPH YAI
-<U0BB0><U0BC6>               /xa6/xc3     TAMIL GLYPH RE
-<U0BB0><U0BCA>               /xa6/xc3/xa1 TAMIL GLYPH RAI
-<U0BB2><U0BC6>               /xa6/xc4     TAMIL GLYPH LE
-<U0BB2><U0BCA>               /xa6/xc4/xa1 TAMIL GLYPH LAI
-<U0BB5><U0BC6>               /xa6/xc5     TAMIL GLYPH VE
-<U0BB5><U0BCA>               /xa6/xc5/xa1 TAMIL GLYPH VAI
-<U0BB4><U0BC6>               /xa6/xc6     TAMIL GLYPH LLLE
-<U0BB4><U0BCA>               /xa6/xc6/xa1 TAMIL GLYPH LLLAI
-<U0BB3><U0BC6>               /xa6/xc7     TAMIL GLYPH LLE
-<U0BB3><U0BCA>               /xa6/xc7/xa1 TAMIL GLYPH LLAI
-<U0BB1><U0BC6>               /xa6/xc8     TAMIL GLYPH RRE
-<U0BB1><U0BCA>               /xa6/xc8/xa1 TAMIL GLYPH RRAI
-<U0BA9><U0BC6>               /xa6/xc9     TAMIL GLYPH NNNE
-<U0BA9><U0BCA>               /xa6/xc9/xa1 TAMIL GLYPH NNNAI
+% The encoded /xa6/xa1 is <U0BC6><U0BBE> which is the decomposition of
+% <U0BCA> and is encoded exactly the same and collated the same.
+%
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
+%IRREVERSIBLE% <U0BCA>                      /xa6/xa1     TAMIL VOWEL SIGN O
+% <U0B95><U0BC6>               /xa6/xb8     TAMIL GLYPH KE
+% <U0B95><U0BCA>               /xa6/xb8/xa1 TAMIL GLYPH KAI
+% <U0B99><U0BC6>               /xa6/xb9     TAMIL GLYPH NGE
+% <U0B99><U0BCA>               /xa6/xb9/xa1 TAMIL GLYPH NGAI
+% <U0B9A><U0BC6>               /xa6/xba     TAMIL GLYPH CE
+% <U0B9A><U0BCA>               /xa6/xba/xa1 TAMIL GLYPH CAI
+% <U0B9E><U0BC6>               /xa6/xbb     TAMIL GLYPH NYE
+% <U0B9E><U0BCA>               /xa6/xbb/xa1 TAMIL GLYPH NYAI
+% <U0B9F><U0BC6>               /xa6/xbc     TAMIL GLYPH TTE
+% <U0B9F><U0BCA>               /xa6/xbc/xa1 TAMIL GLYPH TTAI
+% <U0BA3><U0BC6>               /xa6/xbd     TAMIL GLYPH NNE
+% <U0BA3><U0BCA>               /xa6/xbd/xa1 TAMIL GLYPH NNAI
+% <U0BA4><U0BC6>               /xa6/xbe     TAMIL GLYPH TE
+% <U0BA4><U0BCA>               /xa6/xbe/xa1 TAMIL GLYPH TAI
+% <U0BA8><U0BC6>               /xa6/xbf     TAMIL GLYPH NE
+% <U0BA8><U0BCA>               /xa6/xbf/xa1 TAMIL GLYPH NAI
+% <U0BAA><U0BC6>               /xa6/xc0     TAMIL GLYPH PE
+% <U0BAA><U0BCA>               /xa6/xc0/xa1 TAMIL GLYPH PAI
+% <U0BAE><U0BC6>               /xa6/xc1     TAMIL GLYPH ME
+% <U0BAE><U0BCA>               /xa6/xc1/xa1 TAMIL GLYPH MAI
+% <U0BAF><U0BC6>               /xa6/xc2     TAMIL GLYPH YE
+% <U0BAF><U0BCA>               /xa6/xc2/xa1 TAMIL GLYPH YAI
+% <U0BB0><U0BC6>               /xa6/xc3     TAMIL GLYPH RE
+% <U0BB0><U0BCA>               /xa6/xc3/xa1 TAMIL GLYPH RAI
+% <U0BB2><U0BC6>               /xa6/xc4     TAMIL GLYPH LE
+% <U0BB2><U0BCA>               /xa6/xc4/xa1 TAMIL GLYPH LAI
+% <U0BB5><U0BC6>               /xa6/xc5     TAMIL GLYPH VE
+% <U0BB5><U0BCA>               /xa6/xc5/xa1 TAMIL GLYPH VAI
+% <U0BB4><U0BC6>               /xa6/xc6     TAMIL GLYPH LLLE
+% <U0BB4><U0BCA>               /xa6/xc6/xa1 TAMIL GLYPH LLLAI
+% <U0BB3><U0BC6>               /xa6/xc7     TAMIL GLYPH LLE
+% <U0BB3><U0BCA>               /xa6/xc7/xa1 TAMIL GLYPH LLAI
+% <U0BB1><U0BC6>               /xa6/xc8     TAMIL GLYPH RRE
+% <U0BB1><U0BCA>               /xa6/xc8/xa1 TAMIL GLYPH RRAI
+% <U0BA9><U0BC6>               /xa6/xc9     TAMIL GLYPH NNNE
+% <U0BA9><U0BCA>               /xa6/xc9/xa1 TAMIL GLYPH NNNAI
 <U0BC7>                      /xa7         TAMIL VOWEL SIGN EE
-<U0BCB>                      /xa7/xa1     TAMIL VOWEL SIGN OO
+% The encoded /xa7/xa1 is <U0BC7><U0BBE> which is the decomposition of
+% <U0BCB> and is encoded exactly the same and collated the same.
+%
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
+%IRREVERSIBLE% <U0BCB>                      /xa7/xa1     TAMIL VOWEL SIGN OO
 <U0BCC>                      /xa7/xaa     TAMIL VOWEL SIGN AU
-<U0B95><U0BC7>               /xa7/xb8     TAMIL GLYPH KEE
-<U0B95><U0BCB>               /xa7/xb8/xa1 TAMIL GLYPH KOO
-<U0B95><U0BCC>               /xa7/xb8/xaa TAMIL GLYPH KAU
-<U0B99><U0BC7>               /xa7/xb9     TAMIL GLYPH NGEE
-<U0B99><U0BCB>               /xa7/xb9/xa1 TAMIL GLYPH NGOO
-<U0B99><U0BCC>               /xa7/xb9/xaa TAMIL GLYPH NGAU
-<U0B9A><U0BC7>               /xa7/xba     TAMIL GLYPH CEE
-<U0B9A><U0BCB>               /xa7/xba/xa1 TAMIL GLYPH COO
-<U0B9A><U0BCC>               /xa7/xba/xaa TAMIL GLYPH CAU
-<U0B9E><U0BC7>               /xa7/xbb     TAMIL GLYPH NYEE
-<U0B9E><U0BCB>               /xa7/xbb/xa1 TAMIL GLYPH NYOO
-<U0B9E><U0BCC>               /xa7/xbb/xaa TAMIL GLYPH NYAU
-<U0B9F><U0BC7>               /xa7/xbc     TAMIL GLYPH TTEE
-<U0B9F><U0BCB>               /xa7/xbc/xa1 TAMIL GLYPH TTOO
-<U0B9F><U0BCC>               /xa7/xbc/xaa TAMIL GLYPH TTAU
-<U0BA3><U0BC7>               /xa7/xbd     TAMIL GLYPH NNEE
-<U0BA3><U0BCB>               /xa7/xbd/xa1 TAMIL GLYPH NNOO
-<U0BA3><U0BCC>               /xa7/xbd/xaa TAMIL GLYPH NNAU
-<U0BA4><U0BC7>               /xa7/xbe     TAMIL GLYPH TEE
-<U0BA4><U0BCB>               /xa7/xbe/xa1 TAMIL GLYPH TOO
-<U0BA4><U0BCC>               /xa7/xbe/xaa TAMIL GLYPH TAU
-<U0BA8><U0BC7>               /xa7/xbf     TAMIL GLYPH NEE
-<U0BA8><U0BCB>               /xa7/xbf/xa1 TAMIL GLYPH NOO
-<U0BA8><U0BCC>               /xa7/xbf/xaa TAMIL GLYPH NAU
-<U0BAA><U0BC7>               /xa7/xc0     TAMIL GLYPH PEE
-<U0BAA><U0BCB>               /xa7/xc0/xa1 TAMIL GLYPH POO
-<U0BAA><U0BCC>               /xa7/xc0/xaa TAMIL GLYPH PAU
-<U0BAE><U0BC7>               /xa7/xc1     TAMIL GLYPH MEE
-<U0BAE><U0BCB>               /xa7/xc1/xa1 TAMIL GLYPH MOO
-<U0BAE><U0BCC>               /xa7/xc1/xaa TAMIL GLYPH MAU
-<U0BAF><U0BC7>               /xa7/xc2     TAMIL GLYPH YEE
-<U0BAF><U0BCB>               /xa7/xc2/xa1 TAMIL GLYPH YOO
-<U0BAF><U0BCC>               /xa7/xc2/xaa TAMIL GLYPH YAU
-<U0BB0><U0BC7>               /xa7/xc3     TAMIL GLYPH REE
-<U0BB0><U0BCB>               /xa7/xc3/xa1 TAMIL GLYPH ROO
-<U0BB0><U0BCC>               /xa7/xc3/xaa TAMIL GLYPH RAU
-<U0BB2><U0BC7>               /xa7/xc4     TAMIL GLYPH LEE
-<U0BB2><U0BCB>               /xa7/xc4/xa1 TAMIL GLYPH LOO
-<U0BB2><U0BCC>               /xa7/xc4/xaa TAMIL GLYPH LAU
-<U0BB5><U0BC7>               /xa7/xc5     TAMIL GLYPH VEE
-<U0BB5><U0BCB>               /xa7/xc5/xa1 TAMIL GLYPH VOO
-<U0BB5><U0BCC>               /xa7/xc5/xaa TAMIL GLYPH VAU
-<U0BB4><U0BC7>               /xa7/xc6     TAMIL GLYPH LLLEE
-<U0BB4><U0BCB>               /xa7/xc6/xa1 TAMIL GLYPH LLLOO
-<U0BB4><U0BCC>               /xa7/xc6/xaa TAMIL GLYPH LLLAU
-<U0BB3><U0BC7>               /xa7/xc7     TAMIL GLYPH LLEE
-<U0BB3><U0BCB>               /xa7/xc7/xa1 TAMIL GLYPH LLOO
-<U0BB3><U0BCC>               /xa7/xc7/xaa TAMIL GLYPH LLAU
-<U0BB1><U0BC7>               /xa7/xc8     TAMIL GLYPH RREE
-<U0BB1><U0BCB>               /xa7/xc8/xa1 TAMIL GLYPH RROO
-<U0BB1><U0BCC>               /xa7/xc8/xaa TAMIL GLYPH RRAU
-<U0BA9><U0BC7>               /xa7/xc9     TAMIL GLYPH NNNEE
-<U0BA9><U0BCB>               /xa7/xc9/xa1 TAMIL GLYPH NNNOO
-<U0BA9><U0BCC>               /xa7/xc9/xaa TAMIL GLYPH NNNAU
+% <U0B95><U0BC7>               /xa7/xb8     TAMIL GLYPH KEE
+% <U0B95><U0BCB>               /xa7/xb8/xa1 TAMIL GLYPH KOO
+% <U0B95><U0BCC>               /xa7/xb8/xaa TAMIL GLYPH KAU
+% <U0B99><U0BC7>               /xa7/xb9     TAMIL GLYPH NGEE
+% <U0B99><U0BCB>               /xa7/xb9/xa1 TAMIL GLYPH NGOO
+% <U0B99><U0BCC>               /xa7/xb9/xaa TAMIL GLYPH NGAU
+% <U0B9A><U0BC7>               /xa7/xba     TAMIL GLYPH CEE
+% <U0B9A><U0BCB>               /xa7/xba/xa1 TAMIL GLYPH COO
+% <U0B9A><U0BCC>               /xa7/xba/xaa TAMIL GLYPH CAU
+% <U0B9E><U0BC7>               /xa7/xbb     TAMIL GLYPH NYEE
+% <U0B9E><U0BCB>               /xa7/xbb/xa1 TAMIL GLYPH NYOO
+% <U0B9E><U0BCC>               /xa7/xbb/xaa TAMIL GLYPH NYAU
+% <U0B9F><U0BC7>               /xa7/xbc     TAMIL GLYPH TTEE
+% <U0B9F><U0BCB>               /xa7/xbc/xa1 TAMIL GLYPH TTOO
+% <U0B9F><U0BCC>               /xa7/xbc/xaa TAMIL GLYPH TTAU
+% <U0BA3><U0BC7>               /xa7/xbd     TAMIL GLYPH NNEE
+% <U0BA3><U0BCB>               /xa7/xbd/xa1 TAMIL GLYPH NNOO
+% <U0BA3><U0BCC>               /xa7/xbd/xaa TAMIL GLYPH NNAU
+% <U0BA4><U0BC7>               /xa7/xbe     TAMIL GLYPH TEE
+% <U0BA4><U0BCB>               /xa7/xbe/xa1 TAMIL GLYPH TOO
+% <U0BA4><U0BCC>               /xa7/xbe/xaa TAMIL GLYPH TAU
+% <U0BA8><U0BC7>               /xa7/xbf     TAMIL GLYPH NEE
+% <U0BA8><U0BCB>               /xa7/xbf/xa1 TAMIL GLYPH NOO
+% <U0BA8><U0BCC>               /xa7/xbf/xaa TAMIL GLYPH NAU
+% <U0BAA><U0BC7>               /xa7/xc0     TAMIL GLYPH PEE
+% <U0BAA><U0BCB>               /xa7/xc0/xa1 TAMIL GLYPH POO
+% <U0BAA><U0BCC>               /xa7/xc0/xaa TAMIL GLYPH PAU
+% <U0BAE><U0BC7>               /xa7/xc1     TAMIL GLYPH MEE
+% <U0BAE><U0BCB>               /xa7/xc1/xa1 TAMIL GLYPH MOO
+% <U0BAE><U0BCC>               /xa7/xc1/xaa TAMIL GLYPH MAU
+% <U0BAF><U0BC7>               /xa7/xc2     TAMIL GLYPH YEE
+% <U0BAF><U0BCB>               /xa7/xc2/xa1 TAMIL GLYPH YOO
+% <U0BAF><U0BCC>               /xa7/xc2/xaa TAMIL GLYPH YAU
+% <U0BB0><U0BC7>               /xa7/xc3     TAMIL GLYPH REE
+% <U0BB0><U0BCB>               /xa7/xc3/xa1 TAMIL GLYPH ROO
+% <U0BB0><U0BCC>               /xa7/xc3/xaa TAMIL GLYPH RAU
+% <U0BB2><U0BC7>               /xa7/xc4     TAMIL GLYPH LEE
+% <U0BB2><U0BCB>               /xa7/xc4/xa1 TAMIL GLYPH LOO
+% <U0BB2><U0BCC>               /xa7/xc4/xaa TAMIL GLYPH LAU
+% <U0BB5><U0BC7>               /xa7/xc5     TAMIL GLYPH VEE
+% <U0BB5><U0BCB>               /xa7/xc5/xa1 TAMIL GLYPH VOO
+% <U0BB5><U0BCC>               /xa7/xc5/xaa TAMIL GLYPH VAU
+% <U0BB4><U0BC7>               /xa7/xc6     TAMIL GLYPH LLLEE
+% <U0BB4><U0BCB>               /xa7/xc6/xa1 TAMIL GLYPH LLLOO
+% <U0BB4><U0BCC>               /xa7/xc6/xaa TAMIL GLYPH LLLAU
+% <U0BB3><U0BC7>               /xa7/xc7     TAMIL GLYPH LLEE
+% <U0BB3><U0BCB>               /xa7/xc7/xa1 TAMIL GLYPH LLOO
+% <U0BB3><U0BCC>               /xa7/xc7/xaa TAMIL GLYPH LLAU
+% <U0BB1><U0BC7>               /xa7/xc8     TAMIL GLYPH RREE
+% <U0BB1><U0BCB>               /xa7/xc8/xa1 TAMIL GLYPH RROO
+% <U0BB1><U0BCC>               /xa7/xc8/xaa TAMIL GLYPH RRAU
+% <U0BA9><U0BC7>               /xa7/xc9     TAMIL GLYPH NNNEE
+% <U0BA9><U0BCB>               /xa7/xc9/xa1 TAMIL GLYPH NNNOO
+% <U0BA9><U0BCC>               /xa7/xc9/xaa TAMIL GLYPH NNNAU
 <U0BC8>                      /xa8         TAMIL VOWEL SIGN AI
-<U0B95><U0BC8>               /xa8/xb8     TAMIL GLYPH KA
-<U0B99><U0BC8>               /xa8/xb9     TAMIL GLYPH NGA
-<U0B9A><U0BC8>               /xa8/xba     TAMIL GLYPH CA
-<U0B9E><U0BC8>               /xa8/xbb     TAMIL GLYPH NYA
-<U0B9F><U0BC8>               /xa8/xbc     TAMIL GLYPH TTA
-<U0BA3><U0BC8>               /xa8/xbd     TAMIL GLYPH NNA
-<U0BA4><U0BC8>               /xa8/xbe     TAMIL GLYPH TA
-<U0BA8><U0BC8>               /xa8/xbf     TAMIL GLYPH NA
-<U0BAA><U0BC8>               /xa8/xc0     TAMIL GLYPH PA
-<U0BAE><U0BC8>               /xa8/xc1     TAMIL GLYPH MA
-<U0BAF><U0BC8>               /xa8/xc2     TAMIL GLYPH YA
-<U0BB0><U0BC8>               /xa8/xc3     TAMIL GLYPH RA
-<U0BB2><U0BC8>               /xa8/xc4     TAMIL GLYPH LA
-<U0BB5><U0BC8>               /xa8/xc5     TAMIL GLYPH VA
-<U0BB4><U0BC8>               /xa8/xc6     TAMIL GLYPH LLLA
-<U0BB3><U0BC8>               /xa8/xc7     TAMIL GLYPH LLA
-<U0BB1><U0BC8>               /xa8/xc8     TAMIL GLYPH RRA
-<U0BA9><U0BC8>               /xa8/xc9     TAMIL GLYPH NNNA
+% <U0B95><U0BC8>               /xa8/xb8     TAMIL GLYPH KA
+% <U0B99><U0BC8>               /xa8/xb9     TAMIL GLYPH NGA
+% <U0B9A><U0BC8>               /xa8/xba     TAMIL GLYPH CA
+% <U0B9E><U0BC8>               /xa8/xbb     TAMIL GLYPH NYA
+% <U0B9F><U0BC8>               /xa8/xbc     TAMIL GLYPH TTA
+% <U0BA3><U0BC8>               /xa8/xbd     TAMIL GLYPH NNA
+% <U0BA4><U0BC8>               /xa8/xbe     TAMIL GLYPH TA
+% <U0BA8><U0BC8>               /xa8/xbf     TAMIL GLYPH NA
+% <U0BAA><U0BC8>               /xa8/xc0     TAMIL GLYPH PA
+% <U0BAE><U0BC8>               /xa8/xc1     TAMIL GLYPH MA
+% <U0BAF><U0BC8>               /xa8/xc2     TAMIL GLYPH YA
+% <U0BB0><U0BC8>               /xa8/xc3     TAMIL GLYPH RA
+% <U0BB2><U0BC8>               /xa8/xc4     TAMIL GLYPH LA
+% <U0BB5><U0BC8>               /xa8/xc5     TAMIL GLYPH VA
+% <U0BB4><U0BC8>               /xa8/xc6     TAMIL GLYPH LLLA
+% <U0BB3><U0BC8>               /xa8/xc7     TAMIL GLYPH LLA
+% <U0BB1><U0BC8>               /xa8/xc8     TAMIL GLYPH RRA
+% <U0BA9><U0BC8>               /xa8/xc9     TAMIL GLYPH NNNA
 <U00A9>                      /xa9         COPYRIGHT SIGN
 <U0BD7>                      /xaa         TAMIL AU LENGTH MARK
 <U0B85>                      /xab         TAMIL LETTER A
 <U0B86>                      /xac         TAMIL LETTER AA
-%IRREVERSIBLE%<U0B87>        /xad         TAMIL LETTER I
+% In TSCII 1.7 the hex value for TAMIL LETTER I was moved from /xad
+% to /xfe, thus we leave the next line commented out.
+%
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
+%IRREVERSIBLE% <U0B87>                      /xad         TAMIL LETTER I
 <U0B88>                      /xae         TAMIL LETTER II
 <U0B89>                      /xaf         TAMIL LETTER U
 <U0B8A>                      /xb0         TAMIL LETTER UU
@@ -326,63 +359,57 @@ CHARMAP
 <U0BB3>                      /xc7         TAMIL LETTER LLA
 <U0BB1>                      /xc8         TAMIL LETTER RRA
 <U0BA9>                      /xc9         TAMIL LETTER NNNA
-<U0B9F><U0BBF>               /xca         TAMIL GLYPH TI
-<U0B9F><U0BC0>               /xcb         TAMIL GLYPH TII
-<U0B95><U0BC1>               /xcc         TAMIL GLYPH KU
-<U0B9A><U0BC1>               /xcd         TAMIL GLYPH CU
-<U0B9F><U0BC1>               /xce         TAMIL GLYPH TTU
-<U0BA3><U0BC1>               /xcf         TAMIL GLYPH NNU
-<U0BA4><U0BC1>               /xd0         TAMIL GLYPH TU
-<U0BA8><U0BC1>               /xd1         TAMIL GLYPH NU
-<U0BAA><U0BC1>               /xd2         TAMIL GLYPH PU
-<U0BAE><U0BC1>               /xd3         TAMIL GLYPH MU
-<U0BAF><U0BC1>               /xd4         TAMIL GLYPH YU
-<U0BB0><U0BC1>               /xd5         TAMIL GLYPH RU
-<U0BB2><U0BC1>               /xd6         TAMIL GLYPH LU
-<U0BB5><U0BC1>               /xd7         TAMIL GLYPH VU
-<U0BB4><U0BC1>               /xd8         TAMIL GLYPH LLLU
-<U0BB3><U0BC1>               /xd9         TAMIL GLYPH LLU
-<U0BB1><U0BC1>               /xda         TAMIL GLYPH RRU
-<U0BA9><U0BC1>               /xdb         TAMIL GLYPH NNNU
-<U0B95><U0BC2>               /xdc         TAMIL GLYPH KUU
-<U0B9A><U0BC2>               /xdd         TAMIL GLYPH CUU
-<U0B9F><U0BC2>               /xde         TAMIL GLYPH TTUU
-<U0BA3><U0BC2>               /xdf         TAMIL GLYPH NNUU
-<U0BA4><U0BC2>               /xe0         TAMIL GLYPH TUU
-<U0BA8><U0BC2>               /xe1         TAMIL GLYPH NUU
-<U0BAA><U0BC2>               /xe2         TAMIL GLYPH PUU
-<U0BAE><U0BC2>               /xe3         TAMIL GLYPH MUU
-<U0BAF><U0BC2>               /xe4         TAMIL GLYPH YUU
-<U0BB0><U0BC2>               /xe5         TAMIL GLYPH RUU
-<U0BB2><U0BC2>               /xe6         TAMIL GLYPH LUU
-<U0BB5><U0BC2>               /xe7         TAMIL GLYPH VUU
-<U0BB4><U0BC2>               /xe8         TAMIL GLYPH LLLUU
-<U0BB3><U0BC2>               /xe9         TAMIL GLYPH LLUU
-<U0BB1><U0BC2>               /xea         TAMIL GLYPH RRUU
-<U0BA9><U0BC2>               /xeb         TAMIL GLYPH NNNUU
-<U0B95><U0BCD>               /xec         TAMIL GLYPH K
-<U0B99><U0BCD>               /xed         TAMIL GLYPH NG
-<U0B9A><U0BCD>               /xee         TAMIL GLYPH C
-<U0B9E><U0BCD>               /xef         TAMIL GLYPH NY
-<U0B9F><U0BCD>               /xf0         TAMIL GLYPH TT
-<U0BA3><U0BCD>               /xf1         TAMIL GLYPH NN
-<U0BA4><U0BCD>               /xf2         TAMIL GLYPH T
-<U0BA8><U0BCD>               /xf3         TAMIL GLYPH N
-<U0BAA><U0BCD>               /xf4         TAMIL GLYPH P
-<U0BAE><U0BCD>               /xf5         TAMIL GLYPH M
-<U0BAF><U0BCD>               /xf6         TAMIL GLYPH Y
-<U0BB0><U0BCD>               /xf7         TAMIL GLYPH R
-<U0BB2><U0BCD>               /xf8         TAMIL GLYPH L
-<U0BB5><U0BCD>               /xf9         TAMIL GLYPH V
-<U0BB4><U0BCD>               /xfa         TAMIL GLYPH LLL
-<U0BB3><U0BCD>               /xfb         TAMIL GLYPH LL
-<U0BB1><U0BCD>               /xfc         TAMIL GLYPH RR
-<U0BA9><U0BCD>               /xfd         TAMIL GLYPH NNN
+% <U0B9F><U0BBF>               /xca         TAMIL GLYPH TI
+% <U0B9F><U0BC0>               /xcb         TAMIL GLYPH TII
+% <U0B95><U0BC1>               /xcc         TAMIL GLYPH KU
+% <U0B9A><U0BC1>               /xcd         TAMIL GLYPH CU
+% <U0B9F><U0BC1>               /xce         TAMIL GLYPH TTU
+% <U0BA3><U0BC1>               /xcf         TAMIL GLYPH NNU
+% <U0BA4><U0BC1>               /xd0         TAMIL GLYPH TU
+% <U0BA8><U0BC1>               /xd1         TAMIL GLYPH NU
+% <U0BAA><U0BC1>               /xd2         TAMIL GLYPH PU
+% <U0BAE><U0BC1>               /xd3         TAMIL GLYPH MU
+% <U0BAF><U0BC1>               /xd4         TAMIL GLYPH YU
+% <U0BB0><U0BC1>               /xd5         TAMIL GLYPH RU
+% <U0BB2><U0BC1>               /xd6         TAMIL GLYPH LU
+% <U0BB5><U0BC1>               /xd7         TAMIL GLYPH VU
+% <U0BB4><U0BC1>               /xd8         TAMIL GLYPH LLLU
+% <U0BB3><U0BC1>               /xd9         TAMIL GLYPH LLU
+% <U0BB1><U0BC1>               /xda         TAMIL GLYPH RRU
+% <U0BA9><U0BC1>               /xdb         TAMIL GLYPH NNNU
+% <U0B95><U0BC2>               /xdc         TAMIL GLYPH KUU
+% <U0B9A><U0BC2>               /xdd         TAMIL GLYPH CUU
+% <U0B9F><U0BC2>               /xde         TAMIL GLYPH TTUU
+% <U0BA3><U0BC2>               /xdf         TAMIL GLYPH NNUU
+% <U0BA4><U0BC2>               /xe0         TAMIL GLYPH TUU
+% <U0BA8><U0BC2>               /xe1         TAMIL GLYPH NUU
+% <U0BAA><U0BC2>               /xe2         TAMIL GLYPH PUU
+% <U0BAE><U0BC2>               /xe3         TAMIL GLYPH MUU
+% <U0BAF><U0BC2>               /xe4         TAMIL GLYPH YUU
+% <U0BB0><U0BC2>               /xe5         TAMIL GLYPH RUU
+% <U0BB2><U0BC2>               /xe6         TAMIL GLYPH LUU
+% <U0BB5><U0BC2>               /xe7         TAMIL GLYPH VUU
+% <U0BB4><U0BC2>               /xe8         TAMIL GLYPH LLLUU
+% <U0BB3><U0BC2>               /xe9         TAMIL GLYPH LLUU
+% <U0BB1><U0BC2>               /xea         TAMIL GLYPH RRUU
+% <U0BA9><U0BC2>               /xeb         TAMIL GLYPH NNNUU
+% <U0B95><U0BCD>               /xec         TAMIL GLYPH K
+% <U0B99><U0BCD>               /xed         TAMIL GLYPH NG
+% <U0B9A><U0BCD>               /xee         TAMIL GLYPH C
+% <U0B9E><U0BCD>               /xef         TAMIL GLYPH NY
+% <U0B9F><U0BCD>               /xf0         TAMIL GLYPH TT
+% <U0BA3><U0BCD>               /xf1         TAMIL GLYPH NN
+% <U0BA4><U0BCD>               /xf2         TAMIL GLYPH T
+% <U0BA8><U0BCD>               /xf3         TAMIL GLYPH N
+% <U0BAA><U0BCD>               /xf4         TAMIL GLYPH P
+% <U0BAE><U0BCD>               /xf5         TAMIL GLYPH M
+% <U0BAF><U0BCD>               /xf6         TAMIL GLYPH Y
+% <U0BB0><U0BCD>               /xf7         TAMIL GLYPH R
+% <U0BB2><U0BCD>               /xf8         TAMIL GLYPH L
+% <U0BB5><U0BCD>               /xf9         TAMIL GLYPH V
+% <U0BB4><U0BCD>               /xfa         TAMIL GLYPH LLL
+% <U0BB3><U0BCD>               /xfb         TAMIL GLYPH LL
+% <U0BB1><U0BCD>               /xfc         TAMIL GLYPH RR
+% <U0BA9><U0BCD>               /xfd         TAMIL GLYPH NNN
 <U0B87>                      /xfe         TAMIL LETTER I
 END CHARMAP
-
-WIDTH
-<U0B82> 0
-<U0BC0> 0
-<U0BCD> 0
-END WIDTH
diff --git a/localedata/charmaps/WINDOWS-31J b/localedata/charmaps/WINDOWS-31J
index d5ab12abef..63e987f4ac 100644
--- a/localedata/charmaps/WINDOWS-31J
+++ b/localedata/charmaps/WINDOWS-31J
@@ -734,16 +734,19 @@ CHARMAP
 <U337E>     /x87/x8d     SQUARE ERA NAME MEIZI
 <U337D>     /x87/x8e     SQUARE ERA NAME TAISYOU
 <U337C>     /x87/x8f     SQUARE ERA NAME SYOUWA
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U2252>     /x87/x90     APPROXIMATELY EQUAL TO OR THE IMAGE OF
 %IRREVERSIBLE%<U2261>     /x87/x91     IDENTICAL TO
 %IRREVERSIBLE%<U222B>     /x87/x92     INTEGRAL
 <U222E>     /x87/x93     CONTOUR INTEGRAL
 <U2211>     /x87/x94     N-ARY SUMMATION
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U221A>     /x87/x95     SQUARE ROOT
 %IRREVERSIBLE%<U22A5>     /x87/x96     UP TACK
 %IRREVERSIBLE%<U2220>     /x87/x97     ANGLE
 <U221F>     /x87/x98     RIGHT ANGLE
 <U22BF>     /x87/x99     RIGHT TRIANGLE
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U2235>     /x87/x9a     BECAUSE
 %IRREVERSIBLE%<U2229>     /x87/x9b     INTERSECTION
 %IRREVERSIBLE%<U222A>     /x87/x9c     UNION
@@ -7167,7 +7170,7 @@ CHARMAP
 <U7464>     /xea/xa2     <CJK>
 <U51DC>     /xea/xa3     <CJK>
 <U7199>     /xea/xa4     <CJK>
-
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U7E8A>     /xed/x40     <CJK>
 %IRREVERSIBLE%<U891C>     /xed/x41     <CJK>
 %IRREVERSIBLE%<U9348>     /xed/x42     <CJK>
@@ -9434,6 +9437,7 @@ CHARMAP
 <U2177>     /xfa/x47     SMALL ROMAN NUMERAL EIGHT
 <U2178>     /xfa/x48     SMALL ROMAN NUMERAL NINE
 <U2179>     /xfa/x49     SMALL ROMAN NUMERAL TEN
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U2160>     /xfa/x4a     ROMAN NUMERAL ONE
 %IRREVERSIBLE%<U2161>     /xfa/x4b     ROMAN NUMERAL TWO
 %IRREVERSIBLE%<U2162>     /xfa/x4c     ROMAN NUMERAL THREE
@@ -9448,6 +9452,7 @@ CHARMAP
 <UFFE4>     /xfa/x55     FULLWIDTH BROKEN BAR
 <UFF07>     /xfa/x56     FULLWIDTH APOSTROPHE
 <UFF02>     /xfa/x57     FULLWIDTH QUOTATION MARK
+% The "IRREVERSIBLE" markup is used by iconv testing. Please do not remove.
 %IRREVERSIBLE%<U3231>     /xfa/x58     PARENTHESIZED IDEOGRAPH STOCK
 %IRREVERSIBLE%<U2116>     /xfa/x59     NUMERO SIGN
 %IRREVERSIBLE%<U2121>     /xfa/x5a     TELEPHONE SIGN
