A metaprogram is a program where data denotes another (object) program. The relation between the metalevel data and the object program is specified through encodings. In this paper we discuss the expressivity of various forms of encodings (both ground and non-ground) that have appeared in literature. This is done in a context where encodings are expressed by means of equational theories, and the related unification facility by means of a rewrite system. Then we analyze the formal properties that the associated rewrite systems must satisfy when integrated into a computational framework