have been to 表示曾经去过,暗示已经返回
have gone to 表示已经去了,还没返回
I have been to Paris.( 我曾经去过巴黎)
He has gone to Shanghai.( 他已经去上海了)
另外,在句子当中有延续性时间状语的时候(since...ago,for...等),have been in/at 可以代替have gone to,表示某人已经去了某地多长时间了.
He has gone to Shanghai and has been there(in Shanghai ) for 2 weeks.( 他已经去上海了,并在那里呆了两周)