@ -56,36 +56,48 @@ func TestToUTF8WithErr(t *testing.T) { 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						assert . Equal ( t ,  [ ] byte { 0xc3 ,  0xa1 ,  0xc3 ,  0xa9 ,  0xc3 ,  0xad ,  0xc3 ,  0xb3 ,  0xc3 ,  0xba } ,  [ ] byte ( res ) )   
					 
					 
					 
						assert . Equal ( t ,  [ ] byte { 0xc3 ,  0xa1 ,  0xc3 ,  0xa9 ,  0xc3 ,  0xad ,  0xc3 ,  0xb3 ,  0xc3 ,  0xba } ,  [ ] byte ( res ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						// "áéíóú"
   
					 
					 
					 
						// "áéíóú"
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						res ,  err  =  ToUTF8WithErr ( [ ] byte { 0xef ,  0xbb ,  0xbf ,  0xc3 ,  0xa1 ,  0xc3 ,  0xa9 ,  0xc3 ,  0xad ,  0xc3 ,  0xb3 ,   
					 
					 
					 
						res ,  err  =  ToUTF8WithErr ( [ ] byte {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							0xc3 ,  0xba } )   
					 
					 
					 
							0xef ,  0xbb ,  0xbf ,  0xc3 ,  0xa1 ,  0xc3 ,  0xa9 ,  0xc3 ,  0xad ,  0xc3 ,  0xb3 ,   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							0xc3 ,  0xba ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						} )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						assert . NoError ( t ,  err )   
					 
					 
					 
						assert . NoError ( t ,  err )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						assert . Equal ( t ,  [ ] byte { 0xc3 ,  0xa1 ,  0xc3 ,  0xa9 ,  0xc3 ,  0xad ,  0xc3 ,  0xb3 ,  0xc3 ,  0xba } ,  [ ] byte ( res ) )   
					 
					 
					 
						assert . Equal ( t ,  [ ] byte { 0xc3 ,  0xa1 ,  0xc3 ,  0xa9 ,  0xc3 ,  0xad ,  0xc3 ,  0xb3 ,  0xc3 ,  0xba } ,  [ ] byte ( res ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						res ,  err  =  ToUTF8WithErr ( [ ] byte { 0x48 ,  0x6F ,  0x6C ,  0x61 ,  0x2C ,  0x20 ,  0x61 ,  0x73 ,  0xED ,  0x20 ,  0x63 ,   
					 
					 
					 
						res ,  err  =  ToUTF8WithErr ( [ ] byte {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							0xF3 ,  0x6D ,  0x6F ,  0x20 ,  0xF1 ,  0x6F ,  0x73 ,  0x41 ,  0x41 ,  0x41 ,  0x2e } )   
					 
					 
					 
							0x48 ,  0x6F ,  0x6C ,  0x61 ,  0x2C ,  0x20 ,  0x61 ,  0x73 ,  0xED ,  0x20 ,  0x63 ,   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							0xF3 ,  0x6D ,  0x6F ,  0x20 ,  0xF1 ,  0x6F ,  0x73 ,  0x41 ,  0x41 ,  0x41 ,  0x2e ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						} )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						assert . NoError ( t ,  err )   
					 
					 
					 
						assert . NoError ( t ,  err )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						stringMustStartWith ( t ,  "Hola," ,  res )   
					 
					 
					 
						stringMustStartWith ( t ,  "Hola," ,  res )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						stringMustEndWith ( t ,  "AAA." ,  res )   
					 
					 
					 
						stringMustEndWith ( t ,  "AAA." ,  res )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						res ,  err  =  ToUTF8WithErr ( [ ] byte { 0x48 ,  0x6F ,  0x6C ,  0x61 ,  0x2C ,  0x20 ,  0x61 ,  0x73 ,  0xED ,  0x20 ,  0x63 ,   
					 
					 
					 
						res ,  err  =  ToUTF8WithErr ( [ ] byte {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							0xF3 ,  0x6D ,  0x6F ,  0x20 ,  0x07 ,  0xA4 ,  0x6F ,  0x73 ,  0x41 ,  0x41 ,  0x41 ,  0x2e } )   
					 
					 
					 
							0x48 ,  0x6F ,  0x6C ,  0x61 ,  0x2C ,  0x20 ,  0x61 ,  0x73 ,  0xED ,  0x20 ,  0x63 ,   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							0xF3 ,  0x6D ,  0x6F ,  0x20 ,  0x07 ,  0xA4 ,  0x6F ,  0x73 ,  0x41 ,  0x41 ,  0x41 ,  0x2e ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						} )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						assert . NoError ( t ,  err )   
					 
					 
					 
						assert . NoError ( t ,  err )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						stringMustStartWith ( t ,  "Hola," ,  res )   
					 
					 
					 
						stringMustStartWith ( t ,  "Hola," ,  res )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						stringMustEndWith ( t ,  "AAA." ,  res )   
					 
					 
					 
						stringMustEndWith ( t ,  "AAA." ,  res )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						res ,  err  =  ToUTF8WithErr ( [ ] byte { 0x48 ,  0x6F ,  0x6C ,  0x61 ,  0x2C ,  0x20 ,  0x61 ,  0x73 ,  0xED ,  0x20 ,  0x63 ,   
					 
					 
					 
						res ,  err  =  ToUTF8WithErr ( [ ] byte {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							0xF3 ,  0x6D ,  0x6F ,  0x20 ,  0x81 ,  0xA4 ,  0x6F ,  0x73 ,  0x41 ,  0x41 ,  0x41 ,  0x2e } )   
					 
					 
					 
							0x48 ,  0x6F ,  0x6C ,  0x61 ,  0x2C ,  0x20 ,  0x61 ,  0x73 ,  0xED ,  0x20 ,  0x63 ,   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							0xF3 ,  0x6D ,  0x6F ,  0x20 ,  0x81 ,  0xA4 ,  0x6F ,  0x73 ,  0x41 ,  0x41 ,  0x41 ,  0x2e ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						} )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						assert . NoError ( t ,  err )   
					 
					 
					 
						assert . NoError ( t ,  err )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						stringMustStartWith ( t ,  "Hola," ,  res )   
					 
					 
					 
						stringMustStartWith ( t ,  "Hola," ,  res )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						stringMustEndWith ( t ,  "AAA." ,  res )   
					 
					 
					 
						stringMustEndWith ( t ,  "AAA." ,  res )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						// Japanese (Shift-JIS)
   
					 
					 
					 
						// Japanese (Shift-JIS)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						// 日属秘ぞしちゅ。
   
					 
					 
					 
						// 日属秘ぞしちゅ。
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						res ,  err  =  ToUTF8WithErr ( [ ] byte { 0x93 ,  0xFA ,  0x91 ,  0xAE ,  0x94 ,  0xE9 ,  0x82 ,  0xBC ,  0x82 ,  0xB5 ,  0x82 ,   
					 
					 
					 
						res ,  err  =  ToUTF8WithErr ( [ ] byte {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							0xBF ,  0x82 ,  0xE3 ,  0x81 ,  0x42 } )   
					 
					 
					 
							0x93 ,  0xFA ,  0x91 ,  0xAE ,  0x94 ,  0xE9 ,  0x82 ,  0xBC ,  0x82 ,  0xB5 ,  0x82 ,   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							0xBF ,  0x82 ,  0xE3 ,  0x81 ,  0x42 ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						} )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						assert . NoError ( t ,  err )   
					 
					 
					 
						assert . NoError ( t ,  err )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						assert . Equal ( t ,  [ ] byte { 0xE6 ,  0x97 ,  0xA5 ,  0xE5 ,  0xB1 ,  0x9E ,  0xE7 ,  0xA7 ,  0x98 ,  0xE3 ,   
					 
					 
					 
						assert . Equal ( t ,  [ ] byte {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							0x81 ,  0x9E ,  0xE3 ,  0x81 ,  0x97 ,  0xE3 ,  0x81 ,  0xA1 ,  0xE3 ,  0x82 ,  0x85 ,  0xE3 ,  0x80 ,  0x82 } ,   
					 
					 
					 
							0xE6 ,  0x97 ,  0xA5 ,  0xE5 ,  0xB1 ,  0x9E ,  0xE7 ,  0xA7 ,  0x98 ,  0xE3 ,   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							0x81 ,  0x9E ,  0xE3 ,  0x81 ,  0x97 ,  0xE3 ,  0x81 ,  0xA1 ,  0xE3 ,  0x82 ,  0x85 ,  0xE3 ,  0x80 ,  0x82 ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						} ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							[ ] byte ( res ) )   
					 
					 
					 
							[ ] byte ( res ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						res ,  err  =  ToUTF8WithErr ( [ ] byte { 0x00 ,  0x00 ,  0x00 ,  0x00 } )   
					 
					 
					 
						res ,  err  =  ToUTF8WithErr ( [ ] byte { 0x00 ,  0x00 ,  0x00 ,  0x00 } )   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -108,10 +120,14 @@ func TestToUTF8WithFallback(t *testing.T) { 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						assert . Equal ( t ,  [ ] byte { 0xc3 ,  0xa1 ,  0xc3 ,  0xa9 ,  0xc3 ,  0xad ,  0xc3 ,  0xb3 ,  0xc3 ,  0xba } ,  res )   
					 
					 
					 
						assert . Equal ( t ,  [ ] byte { 0xc3 ,  0xa1 ,  0xc3 ,  0xa9 ,  0xc3 ,  0xad ,  0xc3 ,  0xb3 ,  0xc3 ,  0xba } ,  res )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						// "Hola, así cómo ños"
   
					 
					 
					 
						// "Hola, así cómo ños"
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						res  =  ToUTF8WithFallback ( [ ] byte { 0x48 ,  0x6F ,  0x6C ,  0x61 ,  0x2C ,  0x20 ,  0x61 ,  0x73 ,  0xED ,  0x20 ,  0x63 ,   
					 
					 
					 
						res  =  ToUTF8WithFallback ( [ ] byte {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							0xF3 ,  0x6D ,  0x6F ,  0x20 ,  0xF1 ,  0x6F ,  0x73 } )   
					 
					 
					 
							0x48 ,  0x6F ,  0x6C ,  0x61 ,  0x2C ,  0x20 ,  0x61 ,  0x73 ,  0xED ,  0x20 ,  0x63 ,   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
						assert . Equal ( t ,  [ ] byte { 0x48 ,  0x6F ,  0x6C ,  0x61 ,  0x2C ,  0x20 ,  0x61 ,  0x73 ,  0xC3 ,  0xAD ,  0x20 ,  0x63 ,   
					 
					 
					 
							0xF3 ,  0x6D ,  0x6F ,  0x20 ,  0xF1 ,  0x6F ,  0x73 ,   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							0xC3 ,  0xB3 ,  0x6D ,  0x6F ,  0x20 ,  0xC3 ,  0xB1 ,  0x6F ,  0x73 } ,  res )   
					 
					 
					 
						} )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						assert . Equal ( t ,  [ ] byte {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							0x48 ,  0x6F ,  0x6C ,  0x61 ,  0x2C ,  0x20 ,  0x61 ,  0x73 ,  0xC3 ,  0xAD ,  0x20 ,  0x63 ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							0xC3 ,  0xB3 ,  0x6D ,  0x6F ,  0x20 ,  0xC3 ,  0xB1 ,  0x6F ,  0x73 ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						} ,  res )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						// "Hola, así cómo "
   
					 
					 
					 
						// "Hola, así cómo "
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						minmatch  :=  [ ] byte { 0x48 ,  0x6F ,  0x6C ,  0x61 ,  0x2C ,  0x20 ,  0x61 ,  0x73 ,  0xC3 ,  0xAD ,  0x20 ,  0x63 ,  0xC3 ,  0xB3 ,  0x6D ,  0x6F ,  0x20 }   
					 
					 
					 
						minmatch  :=  [ ] byte { 0x48 ,  0x6F ,  0x6C ,  0x61 ,  0x2C ,  0x20 ,  0x61 ,  0x73 ,  0xC3 ,  0xAD ,  0x20 ,  0x63 ,  0xC3 ,  0xB3 ,  0x6D ,  0x6F ,  0x20 }   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -127,8 +143,10 @@ func TestToUTF8WithFallback(t *testing.T) { 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						// Japanese (Shift-JIS)
   
					 
					 
					 
						// Japanese (Shift-JIS)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						// "日属秘ぞしちゅ。"
   
					 
					 
					 
						// "日属秘ぞしちゅ。"
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						res  =  ToUTF8WithFallback ( [ ] byte { 0x93 ,  0xFA ,  0x91 ,  0xAE ,  0x94 ,  0xE9 ,  0x82 ,  0xBC ,  0x82 ,  0xB5 ,  0x82 ,  0xBF ,  0x82 ,  0xE3 ,  0x81 ,  0x42 } )   
					 
					 
					 
						res  =  ToUTF8WithFallback ( [ ] byte { 0x93 ,  0xFA ,  0x91 ,  0xAE ,  0x94 ,  0xE9 ,  0x82 ,  0xBC ,  0x82 ,  0xB5 ,  0x82 ,  0xBF ,  0x82 ,  0xE3 ,  0x81 ,  0x42 } )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						assert . Equal ( t ,  [ ] byte { 0xE6 ,  0x97 ,  0xA5 ,  0xE5 ,  0xB1 ,  0x9E ,  0xE7 ,  0xA7 ,  0x98 ,  0xE3 ,   
					 
					 
					 
						assert . Equal ( t ,  [ ] byte {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							0x81 ,  0x9E ,  0xE3 ,  0x81 ,  0x97 ,  0xE3 ,  0x81 ,  0xA1 ,  0xE3 ,  0x82 ,  0x85 ,  0xE3 ,  0x80 ,  0x82 } ,  res )   
					 
					 
					 
							0xE6 ,  0x97 ,  0xA5 ,  0xE5 ,  0xB1 ,  0x9E ,  0xE7 ,  0xA7 ,  0x98 ,  0xE3 ,   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							0x81 ,  0x9E ,  0xE3 ,  0x81 ,  0x97 ,  0xE3 ,  0x81 ,  0xA1 ,  0xE3 ,  0x82 ,  0x85 ,  0xE3 ,  0x80 ,  0x82 ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						} ,  res )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						res  =  ToUTF8WithFallback ( [ ] byte { 0x00 ,  0x00 ,  0x00 ,  0x00 } )   
					 
					 
					 
						res  =  ToUTF8WithFallback ( [ ] byte { 0x00 ,  0x00 ,  0x00 ,  0x00 } )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						assert . Equal ( t ,  [ ] byte { 0x00 ,  0x00 ,  0x00 ,  0x00 } ,  res )   
					 
					 
					 
						assert . Equal ( t ,  [ ] byte { 0x00 ,  0x00 ,  0x00 ,  0x00 } ,  res )   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -148,21 +166,29 @@ func TestToUTF8(t *testing.T) { 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						assert . Equal ( t ,  [ ] byte { 0xc3 ,  0xa1 ,  0xc3 ,  0xa9 ,  0xc3 ,  0xad ,  0xc3 ,  0xb3 ,  0xc3 ,  0xba } ,  [ ] byte ( res ) )   
					 
					 
					 
						assert . Equal ( t ,  [ ] byte { 0xc3 ,  0xa1 ,  0xc3 ,  0xa9 ,  0xc3 ,  0xad ,  0xc3 ,  0xb3 ,  0xc3 ,  0xba } ,  [ ] byte ( res ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						// BOM + "áéíóú"
   
					 
					 
					 
						// BOM + "áéíóú"
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						res  =  ToUTF8 ( string ( [ ] byte { 0xef ,  0xbb ,  0xbf ,  0xc3 ,  0xa1 ,  0xc3 ,  0xa9 ,  0xc3 ,  0xad ,  0xc3 ,  0xb3 ,   
					 
					 
					 
						res  =  ToUTF8 ( string ( [ ] byte {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							0xc3 ,  0xba } ) )   
					 
					 
					 
							0xef ,  0xbb ,  0xbf ,  0xc3 ,  0xa1 ,  0xc3 ,  0xa9 ,  0xc3 ,  0xad ,  0xc3 ,  0xb3 ,   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							0xc3 ,  0xba ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						} ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						assert . Equal ( t ,  [ ] byte { 0xc3 ,  0xa1 ,  0xc3 ,  0xa9 ,  0xc3 ,  0xad ,  0xc3 ,  0xb3 ,  0xc3 ,  0xba } ,  [ ] byte ( res ) )   
					 
					 
					 
						assert . Equal ( t ,  [ ] byte { 0xc3 ,  0xa1 ,  0xc3 ,  0xa9 ,  0xc3 ,  0xad ,  0xc3 ,  0xb3 ,  0xc3 ,  0xba } ,  [ ] byte ( res ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						// Latin1
   
					 
					 
					 
						// Latin1
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						// Hola, así cómo ños
   
					 
					 
					 
						// Hola, así cómo ños
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						res  =  ToUTF8 ( string ( [ ] byte { 0x48 ,  0x6F ,  0x6C ,  0x61 ,  0x2C ,  0x20 ,  0x61 ,  0x73 ,  0xED ,  0x20 ,  0x63 ,   
					 
					 
					 
						res  =  ToUTF8 ( string ( [ ] byte {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							0xF3 ,  0x6D ,  0x6F ,  0x20 ,  0xF1 ,  0x6F ,  0x73 } ) )   
					 
					 
					 
							0x48 ,  0x6F ,  0x6C ,  0x61 ,  0x2C ,  0x20 ,  0x61 ,  0x73 ,  0xED ,  0x20 ,  0x63 ,   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
						assert . Equal ( t ,  [ ] byte { 0x48 ,  0x6f ,  0x6c ,  0x61 ,  0x2c ,  0x20 ,  0x61 ,  0x73 ,  0xc3 ,  0xad ,  0x20 ,  0x63 ,   
					 
					 
					 
							0xF3 ,  0x6D ,  0x6F ,  0x20 ,  0xF1 ,  0x6F ,  0x73 ,   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							0xc3 ,  0xb3 ,  0x6d ,  0x6f ,  0x20 ,  0xc3 ,  0xb1 ,  0x6f ,  0x73 } ,  [ ] byte ( res ) )   
					 
					 
					 
						} ) )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						assert . Equal ( t ,  [ ] byte {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							0x48 ,  0x6f ,  0x6c ,  0x61 ,  0x2c ,  0x20 ,  0x61 ,  0x73 ,  0xc3 ,  0xad ,  0x20 ,  0x63 ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							0xc3 ,  0xb3 ,  0x6d ,  0x6f ,  0x20 ,  0xc3 ,  0xb1 ,  0x6f ,  0x73 ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						} ,  [ ] byte ( res ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						// Latin1
   
					 
					 
					 
						// Latin1
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						// Hola, así cómo \x07ños
   
					 
					 
					 
						// Hola, así cómo \x07ños
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						res  =  ToUTF8 ( string ( [ ] byte { 0x48 ,  0x6F ,  0x6C ,  0x61 ,  0x2C ,  0x20 ,  0x61 ,  0x73 ,  0xED ,  0x20 ,  0x63 ,   
					 
					 
					 
						res  =  ToUTF8 ( string ( [ ] byte {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							0xF3 ,  0x6D ,  0x6F ,  0x20 ,  0x07 ,  0xA4 ,  0x6F ,  0x73 } ) )   
					 
					 
					 
							0x48 ,  0x6F ,  0x6C ,  0x61 ,  0x2C ,  0x20 ,  0x61 ,  0x73 ,  0xED ,  0x20 ,  0x63 ,   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							0xF3 ,  0x6D ,  0x6F ,  0x20 ,  0x07 ,  0xA4 ,  0x6F ,  0x73 ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						} ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						// Hola,
   
					 
					 
					 
						// Hola,
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						bytesMustStartWith ( t ,  [ ] byte { 0x48 ,  0x6F ,  0x6C ,  0x61 ,  0x2C } ,  [ ] byte ( res ) )   
					 
					 
					 
						bytesMustStartWith ( t ,  [ ] byte { 0x48 ,  0x6F ,  0x6C ,  0x61 ,  0x2C } ,  [ ] byte ( res ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -173,10 +199,14 @@ func TestToUTF8(t *testing.T) { 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						// Japanese (Shift-JIS)
   
					 
					 
					 
						// Japanese (Shift-JIS)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						// 日属秘ぞしちゅ。
   
					 
					 
					 
						// 日属秘ぞしちゅ。
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						res  =  ToUTF8 ( string ( [ ] byte { 0x93 ,  0xFA ,  0x91 ,  0xAE ,  0x94 ,  0xE9 ,  0x82 ,  0xBC ,  0x82 ,  0xB5 ,  0x82 ,   
					 
					 
					 
						res  =  ToUTF8 ( string ( [ ] byte {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							0xBF ,  0x82 ,  0xE3 ,  0x81 ,  0x42 } ) )   
					 
					 
					 
							0x93 ,  0xFA ,  0x91 ,  0xAE ,  0x94 ,  0xE9 ,  0x82 ,  0xBC ,  0x82 ,  0xB5 ,  0x82 ,   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
						assert . Equal ( t ,  [ ] byte { 0xE6 ,  0x97 ,  0xA5 ,  0xE5 ,  0xB1 ,  0x9E ,  0xE7 ,  0xA7 ,  0x98 ,  0xE3 ,   
					 
					 
					 
							0xBF ,  0x82 ,  0xE3 ,  0x81 ,  0x42 ,   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							0x81 ,  0x9E ,  0xE3 ,  0x81 ,  0x97 ,  0xE3 ,  0x81 ,  0xA1 ,  0xE3 ,  0x82 ,  0x85 ,  0xE3 ,  0x80 ,  0x82 } ,   
					 
					 
					 
						} ) )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						assert . Equal ( t ,  [ ] byte {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							0xE6 ,  0x97 ,  0xA5 ,  0xE5 ,  0xB1 ,  0x9E ,  0xE7 ,  0xA7 ,  0x98 ,  0xE3 ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							0x81 ,  0x9E ,  0xE3 ,  0x81 ,  0x97 ,  0xE3 ,  0x81 ,  0xA1 ,  0xE3 ,  0x82 ,  0x85 ,  0xE3 ,  0x80 ,  0x82 ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						} ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							[ ] byte ( res ) )   
					 
					 
					 
							[ ] byte ( res ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						res  =  ToUTF8 ( "\x00\x00\x00\x00" )   
					 
					 
					 
						res  =  ToUTF8 ( "\x00\x00\x00\x00" )   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -216,8 +246,10 @@ func TestToUTF8DropErrors(t *testing.T) { 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						// Japanese (Shift-JIS)
   
					 
					 
					 
						// Japanese (Shift-JIS)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						// "日属秘ぞしちゅ。"
   
					 
					 
					 
						// "日属秘ぞしちゅ。"
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						res  =  ToUTF8DropErrors ( [ ] byte { 0x93 ,  0xFA ,  0x91 ,  0xAE ,  0x94 ,  0xE9 ,  0x82 ,  0xBC ,  0x82 ,  0xB5 ,  0x82 ,  0xBF ,  0x82 ,  0xE3 ,  0x81 ,  0x42 } )   
					 
					 
					 
						res  =  ToUTF8DropErrors ( [ ] byte { 0x93 ,  0xFA ,  0x91 ,  0xAE ,  0x94 ,  0xE9 ,  0x82 ,  0xBC ,  0x82 ,  0xB5 ,  0x82 ,  0xBF ,  0x82 ,  0xE3 ,  0x81 ,  0x42 } )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						assert . Equal ( t ,  [ ] byte { 0xE6 ,  0x97 ,  0xA5 ,  0xE5 ,  0xB1 ,  0x9E ,  0xE7 ,  0xA7 ,  0x98 ,  0xE3 ,   
					 
					 
					 
						assert . Equal ( t ,  [ ] byte {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							0x81 ,  0x9E ,  0xE3 ,  0x81 ,  0x97 ,  0xE3 ,  0x81 ,  0xA1 ,  0xE3 ,  0x82 ,  0x85 ,  0xE3 ,  0x80 ,  0x82 } ,  res )   
					 
					 
					 
							0xE6 ,  0x97 ,  0xA5 ,  0xE5 ,  0xB1 ,  0x9E ,  0xE7 ,  0xA7 ,  0x98 ,  0xE3 ,   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							0x81 ,  0x9E ,  0xE3 ,  0x81 ,  0x97 ,  0xE3 ,  0x81 ,  0xA1 ,  0xE3 ,  0x82 ,  0x85 ,  0xE3 ,  0x80 ,  0x82 ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						} ,  res )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						res  =  ToUTF8DropErrors ( [ ] byte { 0x00 ,  0x00 ,  0x00 ,  0x00 } )   
					 
					 
					 
						res  =  ToUTF8DropErrors ( [ ] byte { 0x00 ,  0x00 ,  0x00 ,  0x00 } )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						assert . Equal ( t ,  [ ] byte { 0x00 ,  0x00 ,  0x00 ,  0x00 } ,  res )   
					 
					 
					 
						assert . Equal ( t ,  [ ] byte { 0x00 ,  0x00 ,  0x00 ,  0x00 } ,  res )