Php 本地、开发和产品环境之间的字符编码差异导致了路障

Php 本地、开发和产品环境之间的字符编码差异导致了路障,php,python,apache,vim,character-encoding,Php,Python,Apache,Vim,Character Encoding,我有一个包含Apache重定向规则的文件,它被发送到开发服务器和生产服务器,这两个服务器的手动设置大致相同。使用Vim,文件的文本将显示为本地和开发服务器上都可以读取的文本(包含所有不规则字符),但一旦上传到生产服务器,Vim就不理解任何不规则字符,Apache无法将包含它们的URL与实际站点URL相匹配 我使用一个设置了“#coding:utf8”的python脚本,通过编程从旧站点和新站点的片段中创建了这个Apache重定向文件 URL中有Drupal生成的故事标题,它们由法语、西班牙语和英

我有一个包含Apache重定向规则的文件,它被发送到开发服务器和生产服务器,这两个服务器的手动设置大致相同。使用Vim,文件的文本将显示为本地和开发服务器上都可以读取的文本(包含所有不规则字符),但一旦上传到生产服务器,Vim就不理解任何不规则字符,Apache无法将包含它们的URL与实际站点URL相匹配

我使用一个设置了“#coding:utf8”的python脚本,通过编程从旧站点和新站点的片段中创建了这个Apache重定向文件

URL中有Drupal生成的故事标题,它们由法语、西班牙语和英语标题组成。英语中有很多撇号('),而法语和西班牙语中有更多的不规则字符

如何让我的生产服务器像我的开发服务器和本地机器一样正确地编码文本(我想是系统范围的)?

什么有效:

sudo apt-get install language-pack-en-base
dpkg-reconfigure locale
我试过:

sudo locale-gen en_US en_US.UTF-8
dpkg-reconfigure locales
然后加上:

LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
到/etc/environment/locale,虽然它确实用相同的方法填充了/var/lib/locales/supported.d/local,但它不起作用。 最终修复源于:

行为不正常的服务器上的区域设置是什么?哦,你好,有问题。。。语言环境:无法将LC_CTYPE设置为默认语言环境:无此类文件或目录语言环境:无法将LC_消息设置为默认语言环境:无此类文件或目录语言环境:无法将LC_COLLATE设置为默认语言环境:无此类文件或目录C.UTF-8 POSIX是为$LOCATE创建的-a$LOCATE添加LANG=en_PH.UTF-8 LANGUAGE=LC_CTYPE=“en_PH.UTF-8”LC_NUMERIC=en_US.UTF-8 LC_TIME=en_US.UTF-8 LC_COLLATE=“en_PH.UTF-8”LC_MONETARY=en_US.UTF-8 LC_MESSAGES=“en_PH.UTF-8”LC_PAPER=en_US.UTF-8 LC_NAME=en_US.UTF-8 LC_地址=en_.UTF-8 LC_电话=en_.UTF-8 LC_-8 LC_测量=en_-US.UTF-8 LC-8识别=en_-8所有我的身份都在这里。。。我没有/etc/default/locale文件有一个/etc/locale.alias文件,尽管该文件说它已过时/var/lib/locales/是空的,而supported.d也是空的。我执行了:sudo locale gen en_US en_US.UTF-8 dpkg reconforme locales并添加了:LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 to/etc/default/locale/var/lib/locales/supported.d/现在包含具有相同内容的local,仍然:区域设置:无法将LC_CTYPE设置为默认区域设置:没有此类文件或目录区域设置:无法将LC_消息设置为默认区域设置:没有此类文件或目录区域设置:无法将LC_COLLATE设置为默认区域设置:没有此类文件或目录C.UTF-8 POSIX en_US en_US.iso88591 en_US.utf8