Yes, I got the answer. The last try.
it should be
name1 = new
String(name.getBytes(
"8859_1"),"UTF-8");
But I don't know why. Why I can't use "UTF8", because the page encoding is UTF8. and I set the request character encoding as "UTF8" . Why I should pick "8859_1", it is because my request locale is "en_US" ? if yes, in the future coding, how could I know user request locale ? what is the relationship between locale and encoding (eg,"UTF8") ?
The problem is done, more problems are up.
Thanks .