Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 7b1d5ec1222a5ae852547c3a87dffe47322d5471)
+++ src/Parser/parser.yy	(revision ea0c5e33eaaef56501abb6dccd5b863d6c14f0dc)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Sep 11 08:22:25 2017
-// Update Count     : 2783
+// Last Modified On : Mon Sep 11 18:12:00 2017
+// Update Count     : 2787
 //
 
@@ -65,5 +65,5 @@
 bool appendStr( string & to, string & from ) {
 	// 1. Multiple strings are concatenated into a single string but not combined internally. The reason is that
-	//    "\x12" "3" is treated as 2 characters versus 3 because "escape sequences are converted into single members of
+	//    "\x12" "3" is treated as 2 characters versus 1 because "escape sequences are converted into single members of
 	//    the execution character set just prior to adjacent string literal concatenation" (C11, Section 6.4.5-8). It is
 	//    easier to let the C compiler handle this case.
@@ -75,10 +75,17 @@
 	if ( from[0] != '"' ) {								// encoding ?
 		if ( to[0] != '"' ) {							// encoding ?
-			if ( to[0] != from[0] ) {					// different encodings ?
+			if ( to[0] != from[0] || to[1] != from[1] ) { // different encodings ?
 				yyerror( "non-matching string encodings for string-literal concatenation" );
 				return false;							// parse error, must call YYERROR in action
+			} else if ( from[1] == '8' ) {
+				from.erase( 0, 1 );						// remove 2nd encoding
 			} // if
 		} else {
-			to = from[0] + to;							// move encoding to start
+			if ( from[1] == '8' ) {						// move encoding to start
+				to = "u8" + to;
+				from.erase( 0, 1 );						// remove 2nd encoding
+			} else {
+				to = from[0] + to;
+			} // if
 		} // if
 		from.erase( 0, 1 );								// remove 2nd encoding
