汉昭帝死了,上官皇后才十五岁,没有孩子,别的妃子也没生过儿子。大臣们议论纷纷,立谁做皇帝呢?霍光听了别人的话,把汉武帝的一个孙子昌邑王刘贺立为国君。没想到昌邑王是个昏君,他荒淫无度,据说即位才二十七天工夫,就做了一千一百二十七件不应做的事。霍光他们一班大臣只好废了昌邑王,另立汉武帝的曾孙刘询(xún)为国君,就是汉宣帝。不久,霍光死了,汉宣帝重用丞相魏相、卫将军张安世、老将军赵充国等。
这时候,匈奴由于出了五个单于,互相攻打杀伐。其中有个单于叫呼韩邪,他杀了一个主要的敌手,打败了别的几个单于,差不多可以把匈奴统一了。想不到他的哥哥自立为郅(zhì)支单于,又跟呼韩邪单于打起仗来了。呼韩邪单于打了几个败仗,死伤了不少人马,不知道怎么办才好。大臣当中有人劝他跟汉朝和好。呼朝邪单于决定亲自带着部下到长安来见汉宣帝。
公元前51年正月,匈奴呼韩邪单于亲自来见汉宣帝。汉宣帝亲自到长安郊外迎接了他,为他开了盛大的宴会,还送了不少礼物。
呼韩邪单于和匈奴的大臣们在长安住了一个月。到了二月里,呼韩邪单于请求汉宣帝帮助他们回去。汉宣帝答应了,派两个将军带领一万六千名骑兵护送他到了漠南。这时候,匈奴正缺少粮食,汉朝送去了三万四千斛(hú,古时候十斗为一斛)粮食。
郅支单于怕汉朝帮着呼韩邪单于去打他,也打发自己的儿子到长安来,表示和汉朝友好。西域各国也都争先恐后地来和汉朝打交道。汉宣帝不用说多么高兴了。
汉宣帝在位的几十年,汉朝强盛了一个时期。公元前49年,汉宣帝病死,太子即位,就是汉元帝。过了几年,郅支单于侵犯西域各国,还杀了汉朝派去的使臣。西域各国请求汉朝出兵,于是,汉朝发兵打败了郅支单于,郅支单于也死了。
郅支单于一死,呼韩邪单于的匈奴王位可以坐定了。他在公元前33年再一次亲自到长安来,要求和汉朝结亲。汉元帝也愿意同匈奴和亲,答应了。他吩咐大臣到后宫去传话:“谁愿意到匈奴去的,皇上就把她当作公主看待。”
后宫的宫女都是从民间选来的,她们好像关在笼子里的鸟儿,永远没有飞的份儿。能够出去嫁人的话,就是嫁给一个平民也够称心了。可是要她们离开本国到遥远的匈奴去,谁都不乐意。其中有个宫女叫王嫱(qiáng),又叫王昭君,很有见识。为了两国的和好,她报名愿意到匈奴去。管这件事的大臣正为了没有人应征而焦急,难得王昭君肯去,就把她报上去。汉元帝就吩咐几个专门办理喜事的臣下,准备嫁妆,择个日子,给呼韩邪单于和王昭君成亲。
到了结婚那一天,呼韩邪单于瞧王昭君年轻美貌,从心眼里感激汉元帝。不说别的,那份嫁妆已经够叫他高兴了。光是绸缎布帛一项,就有一万八千匹,丝绵一万六千斤。从汉朝方面说,只要匈奴不来侵犯,使边界上的居民能够不受到抢劫和屠杀,已经够称心了。现在呼韩邪单于一心跟汉朝和好,从此不再来侵犯,汉朝怎么样优待他也都乐意的。因此,在呼韩邪单于夫妇离开长安那一天,汉元帝在宫廷里举行一个盛大的宴会欢送他们。
王昭君到了匈奴,住在塞(sài,有防御工事的边界)外,从此见不到父母之邦,心里不免难受。但匈奴的百姓都喜欢她,尊敬他,她慢慢儿也就生活惯了。打这以后,匈奴和汉朝和睦相处,六十多年没有打仗。
公元前33年,汉元帝死了。太子即位,就是汉成帝。汉成帝立母亲王政君为皇太后,拜大舅王凤为大司马大将军,二舅王崇为安成侯,还有五个小舅舅都封了侯。外戚(太后或者皇后的亲戚)王家从此掌握了朝廷的大权。