Rene Gallimard (Jeremy Irons) é um diplomata francês na China em meados da década de 1960 e não é particularmente popular entre seus colegas devido às suas aspirações. Quando ele conhece o sedutor cantor Song Li (John Lone) após uma apresentação da ópera "Madame Butterfly", ele se apaixona pelo charmoso ator à primeira vista. Mas reage com cautela. Quanto mais Gallimard se aproxima dele, mais o diplomata precisa ter cuidado para esconder seus sentimentos de sua esposa. Um caso de amor se desenvolve entre Gallimard e Song. Mas os problemas de Gallimard são maiores do que ele inicialmente pensa: Song é um homem, e um espião chinês. Gallimard descobre que sabia tão pouco sobre a "mulher" que pensava amar que nem percebeu que ele não era uma mulher.