code: func utf8toutf16(s string) string {
  	res := make([]byte, 0, 8)
  	res = append(res, 0xFE, 0xFF)
  	nb := len(s)
  	i := 0
  	for i < nb {
  		c1 := byte(s[i])
  		i++
  		switch {
  		case c1 >= 224:
  			// 3-byte character
  			c2 := byte(s[i])
  			i++
  			c3 := byte(s[i])
  			i++
  			res = append(res, ((c1&0x0F)<<4)+((c2&0x3C)>>2),
  				((c2&0x03)<<6)+(c3&0x3F))
  		case c1 >= 192:
  			// 2-byte character
  			c2 := byte(s[i])
  			i++
  			res = append(res, ((c1 & 0x1C) >> 2),
  				((c1&0x03)<<6)+(c2&0x3F))
  		default:
  			// Single-byte character
  			res = append(res, 0, c1)
  		}
  	}
  	return string(res)
  }
docs: // utf8toutf16 converts UTF-8 to UTF-16BE with BOM; from http://www.fpdf.org/