Lo ideal sería hacerlo todo via .htaccess si estás usando Apache
Estos son solo ejemplos, que charset debas pasar a cada cosa depende
de tu web primero ponés el charset y después a que extensión de archivo se la querés aplicar, bien pueden ser diferentes. (por favor asegurate que tus archivos hayan sido guardados por tu editor de texto con el mismo charset que declarás en el header)
En cuanto a la compresión el método que te propongo es el más sencillo, pero como bien marcó @zerokilled, depende de la configuración de tu servidor, aunque hoy en día la mayoría de los servidores que usan Apache, tienen mod_deflate habilitado.
Si no te funciona, deberás recurriir, como ya se dijo, a php
Código Apache:
Ver original# charset
AddCharset utf-8 .html
AddCharset utf-8 .js
AddCharset iso-8859-1 .php
# compresión
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE image/jpeg
</ifModule>
el archivo .htaccess, si no existiese, tenes que crearlo en la raiz del sitio
SAludos