标签: encoding

如何在 Linux 上判断文件名的语言编码?

我有一个目录,其中包含来自外部源的约 10,000 个图像文件。

许多文件名包含对 DB 或 Web 不友好的空格和标点符号。我还想在每个文件名的末尾附加一个 SKU 编号(出于会计目的)。许多(如果不是大多数)文件名还包含扩展的拉丁字符,我想保留这些字符用于 SEO 目的(特别是文件名准确地代表 Google 图片中的文件内容)

我制作了一个 bash 脚本,它将所有文件重命名(复制)为我想要的结果。bash 脚本以 UTF-8 格式保存。运行后,它省略了大约 500 个文件(无法统计文件...)。

我已经在目录上运行了convmv -f UTF-8 -t UTF-8,发现这 500 个文件名不是用 UTF-8 编码的(convmv 能够检测并忽略已经在 UTF-8 中的文件名)

有一个简单的办法,我可以找出哪些他们目前正在使用的语言编码?

我能够弄清楚自己的唯一方法是将我的终端编码设置为 UTF-8,然后使用 convmv 遍历所有可能的候选编码,直到它显示一个“看起来正确”的转换名称。我无法确定这 500 个文件都使用相同的编码,所以我需要重复这个过程 500 次。我想要一种比“看起来正确”更自动化的方法!!!

linux ext3 encoding

18
推荐指数
2
解决办法
3万
查看次数

Mercurial 转换文件名编码

我有使用 mod_wsgi 在 Apache 上运行的 Mercurial 存储库。存储库的所有文件名都以 windows-1251 编码。这种编码用于历史原因:它们从 svn 转换为 mercurial,windows-1251 是俄罗斯语言环境的默认 windows 编码。

现在程序员想要使用Crucible工具进行代码审查。它不能用除 utf-8 以外的任何其他编码对文件名进行undersand。所以我需要将它们从 windows-1251 转换为 utf-8。有谁知道如何做到这一点?Mercurial 转换扩展没有转换编码的选项。

hgweb.config:

[web]
#encoding = UTF-8
encoding = windows-1251
#allow_archive = gz, zip, bz2
allow_archive = zip
allow_push = *
push_ssl = false

[extensions]

[collections]
/data/mercurial = /data/mercurial
Run Code Online (Sandbox Code Playgroud)

mercurial encoding crucible

12
推荐指数
2
解决办法
4684
查看次数

如何在 Apache 中为 JSON 设置正确的标头?

我有一个提供静态 JSON 文件的 Apache 服务器。内容类型在带有Content-Type: application/json标题的标题中正确表示。

如何将正确的字符集添加到标题中?

我在我的以下行httpd.conf

AddDefaultCharset utf-8
Run Code Online (Sandbox Code Playgroud)

但即使有这一行,Apache 也不会在标题中设置字符集。

这很重要,因为我的 JSON 文件有一些法语数据,并且在 JavaScript 代码中没有正确读取口音。

那么如何在 Apache 中为 JSON 设置正确的标头?

http-headers encoding apache-2.2

12
推荐指数
1
解决办法
3万
查看次数

从 shell 编码到 base32

我希望直接从 shell 将输入字符串编码为 base32 编码。我希望在 ubuntu 中做到这一点,但我想味道在这里并不特别重要。

是否有任何现有的 linux/unix 工具可以简单地执行此操作?

类似的东西:

-bash-3.2$ echo -n 'hello' | base32
Run Code Online (Sandbox Code Playgroud)

linux unix ubuntu shell encoding

10
推荐指数
1
解决办法
1万
查看次数

PuTTY 可以配置为显示以下 UTF-8 字符吗?

我希望能够渲染此推文中所见的字符:

在此处输入图片说明

我保存了推文的 JSON 数据并编写了一个单行 Python 脚本进行测试。

python -c 'import json,urllib; print json.load(urllib.urlopen("http://c.sente.cc/BUCq/tweet.json"))["text"]'
Run Code Online (Sandbox Code Playgroud)

下图显示了此命令在两个不同的腻子会话中的输出,一个使用Bitstream Vera Sans Mono字体,另一个使用Courier New

在此处输入图片说明

接下来是正确输出的示例(我没有使用 PuTTY):

正确的 Unicode 输出

原始 JSON 位于此链接,使用 Twitter 的 API

如何让 PuTTY 显示这些字符?

putty utf-8 unicode encoding

9
推荐指数
1
解决办法
2万
查看次数

确定 RedHat 系统中的默认字符编码

如何使用命令行确定 RedHat 系统中的默认字符编码?我只想知道如果没有指定 Java 应用程序默认使用什么编码

redhat encoding

9
推荐指数
1
解决办法
4万
查看次数

nginx $uri 是 url 解码

我使用nginx作为反向代理,我有 2 条规则,例如:

location ~ ^/indirect {
  rewrite ^/indirect(.*) /foobar$1;
}

location ~ ^/foobar {
  set $url http://example.com/something/index.php?var1=hello&access=$scheme://$host$uri;
  proxy_pass $url;
}
Run Code Online (Sandbox Code Playgroud)

因此,正如您所看到的,我将$uri变量作为参数传递给代理页面(该$uri变量是 nginx 的,请参阅http core module文档)。

问题是,如果我访问http://example.com/foobar/hello%20world,该$uri变量包含 /foobar/hello world(如您所见,%20已被其 url 解码值替换,一个空格)。然后,nginx 在执行 proxy_pass 行(未联系后端)之前返回 http 状态代码 400(错误请求)。

还有可用的变量$request_uri,它保存客户端发出的原始请求 URI,因此在这种情况下,它将保存正确的值和%20序列。但是我不能使用它,因为如果客户端通过/indirect路径,$request_uri将包含/indirect/...而我希望access传递给后端的参数始终为/foobar/...

有多个indirect类似规则(这是针对 DAV/calDAV/cardDAV 服务器,并且有多个客户端连接到多个路径,所以我需要这些类似indirect规则),所以在proxy_pass那里做是不可行的,并且有直接进入/foobar路径的客户端。

那么有没有什么方法可以 …

rewrite nginx encoding

9
推荐指数
1
解决办法
3万
查看次数

使用 IIS 7 强制编码

我尝试使用 IIS 7 强制编码。

当我在 http 响应头中添加密钥时:

内容类型和值 charset=utf-8 我得到了这个关键的内容类型:text/html,content-type=utf-8

有没有办法去掉逗号?

感谢贾斯汀的回答。

但它看到不起作用。有我的配置,我需要为 asp 经典做那个。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <staticContent>
            <remove fileExtension=".html" />
            <remove fileExtension=".hxt" />
            <remove fileExtension=".htm" />
            <remove fileExtension=".asp" />
            <mimeMap fileExtension=".htm" mimeType="text/html" />
            <mimeMap fileExtension=".hxt" mimeType="text/html" />
            <mimeMap fileExtension=".html" mimeType="text/html" />
            <mimeMap fileExtension=".asp" mimeType="text/html; charset=UTF-8" />
        </staticContent>
    </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

iis iis-7 http-headers encoding

7
推荐指数
1
解决办法
1万
查看次数

对于带有变音符号的密码,针对 LDAP 的 Apache 身份验证失败

从 Apache 服务器对 LDAP(Active Directory、Server 2008)进行身份验证时,我在错误日志中收到以下消息:

authentication failure for "/": Password Mismatch
Run Code Online (Sandbox Code Playgroud)

仅当密码包含德语变音符号(ä、ö、ü)时才会发生这种情况。更改密码或尝试使用其他帐户而密码中没有变音符号后,身份验证工作正常。

这是我的配置:

AuthType Basic
AuthzLDAPAuthoritative off
AuthLDAPURL "ldap://[SERVER]:3268/DC=[DOMAIN]?sAMAccountName?sub?(objectClass=user)"
AuthLDAPBindDN       "user"
AuthLDAPBindPassword "pass"
require valid-user
Run Code Online (Sandbox Code Playgroud)

我在 Debian (2.6.26-2-686) 下使用 Apache2 (2.2.16-6+squeeze1)。有趣的是,上述配置一直工作到昨天(即使是带有变音符号的密码)而且我没有碰它(我发誓;-))。我已经找到其他人有同样的问题,但没有解决方案。

有没有人知道如何解决问题或简单地下一步做什么来识别错误的模块?

最好的问候,斯蒂芬

debian ldap encoding apache-2.2

7
推荐指数
1
解决办法
1928
查看次数

Linux 不解释 UTF8 编码的字符

因此,Adán-y-Eva-50x50.jpg当我尝试访问以下文件时,apacheAd\xc3\xa1n-y-Eva-50x50.jpg会将其转换为并找不到它,即使它存在。

这仅适用于包含 UTF8 字符的文件名。

我已经有以下配置 /etc/httpd/conf/httpd.conf

...
AddDefaultCharset UTF-8
...
IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable +Charset=UTF-8
...
Run Code Online (Sandbox Code Playgroud)

.htaccess在第一行将其添加到我的根目录中:

IndexOptions +Charset=UTF-8
Run Code Online (Sandbox Code Playgroud)

所有这些都无法加载此类文件。有什么建议?

更新

顺便提一下:我在 CentOS 服务器上运行网站,并预配置了 plesk 面板

linux centos utf-8 encoding apache-2.2

7
推荐指数
1
解决办法
3万
查看次数