I don't know if I'm doing something wrong. When I am calling wp_set_post_terms with a term containing an ampersand, a new term with that name is being created.
wp_set_post_terms( $post_id, $taxo[$term]->name , $taxonomy, $append );
where $taxo[$term]->name = 'lorem & ipsum'
However, when I rename the term to 'lorem and ipsum' I don't have any issues.