标签: utf-8

如何禁止非 UTF-8 文件名?

是否可以在文件系统级别强制所有创建的文件条目都具有有效的 UTF-8 名称?我正在使用 Btrfs。

linux utf-8 btrfs

5
推荐指数
1
解决办法
954
查看次数

将 unix samba 4 共享挂载到 osx 客户端,而不会损坏文件名

我有一个带有 samba 4.1.12 的 unix 服务器(arch linux)。该共享中包含使用 utf-8 nfc 编码(标准 utf-8)的文件。

当我将此 samba 共享挂载到 osx 客户端 (10.9.5) 时,具有特殊名称的文件在 osx 客户端上File with "quotes"显示为已损坏 ( C7XSWH~V)。

当我在共享内的 osx 客户端上创建一个带有特殊字符的文件时,它在 osx 中正确显示,但在 unix 服务器上它显示一个奇怪的符号,如File with ?quotes?.

我认为这是因为 osx 期望文件名采用 utf-8 nf d形式,但这些文件作为 utf-8 nf c服务器。

基本上我想要一个工作 samba 共享,来自 osx 和 unix 客户端的用户可以访问和存储文件,并且应该允许文件名中的特殊字符。有没有办法做到这个跨平台?

我怎样才能告诉 osx 简单地对 samba 共享使用 utf-8 nfc 编码?有没有办法做到这一点?

我已经尝试过诸如在 unix 服务器上的 smb.conf 中显式设置编码之类的事情,但没有运气:

unix charset = utf-8
dos charset = utf-8

# --> error …
Run Code Online (Sandbox Code Playgroud)

mac-osx charset utf-8 samba4

5
推荐指数
1
解决办法
3414
查看次数

apache RewriteRule 匹配 % 编码 URL 的语法?(修复字符编码问题;windows-1252 <=> utf-8 )

我托管的网页的 URL 中包含“ \”,与托管静态文件的project\xc2\xb2磁盘目录相匹配。project\xc2\xb2

\n

此页面由基于 java 的客户端用来从 URL(生物信息学软件IGV)加载数据。\n我的页面以 的形式列出 URL http://localhost:60151/load?file=http://example.org/project\xc2\xb2/some/data/file.bam。\n在浏览器中单击这些链接将导致 IGV 客户端(在本地主机上运行)发出请求GET http://example.org/project\xc2\xb2/some/data/file.bam从我的服务器。

\n

Linux/Mac 上的 \xe2\x9c\x85 IGV 通过请求此 URL 作为 UTF-8 编码\xc2\xb2=进行响应%C2%B2,一切正常。
\n\xe2\x9d\x8c 我新获得的Win-10用户的客户端请求\xc2\xb2= %B2(windows-1252编码),导致404-not-found。

\n

在尝试了几十种方法之后,我不知道如何帮助这个用户。

\n

我的印象是我应该能够在服务器端动态重写错误编码的 URL,以便它们最终仍然提供所需的数据,但是我不知道使规则模式匹配的神奇字符组合转义字符。

\n
\n

我已经尝试过的事情

\n
    \n
  • 仔细检查 404 是否不是网络问题;我看到GET %B2我的ssl_access_logwith404作为返回的状态码,所以它确实是服务器在做。
  • \n
  • “正确的”方式:在将 URL 提供给客户端之前对 URL 进行 UrlEncoding。Perl 的将 变成URI::Encode encode_uri(显然?),这在某种程度上更加错误\xc2\xb2%C3%82%C2%B2 …

mod-rewrite utf-8 encoding apache-2.4

5
推荐指数
1
解决办法
4791
查看次数

spamassassin如何匹配日语?

我住在日本。最近有很多来自中国的垃圾邮件,邮件都是用中文写的。由于 spamassassin 不包含中文规则,因此大多数电子邮件以低分通过。

我想确定何时仅用中文撰写电子邮件。由于大多数日语汉字都包含在中文范围内(U+E400 到 U+E9FF),识别日语的一种方法是查看平假名(U+3040 到 U+309F)和片假名(U+30A0 到 U +30FF)。如果它包含平假名或片假名,我可以肯定地认为是日语,否则是中文。

如果我测试单个字符,例如:?或者?它们正确匹配,但是当我使用范围时它不起作用。这是我们尝试过的:

body    CHINESE       /[\xe4-\xe9]/                 <--- this form seems to work fine
body    JAPANESE      /[\x30-\x31]/                 <--- not sure what is actually matching
body    JAPANESE      /(?|?)/                      <---- this matches single character just fine
body    JAPANESE      /[?-?]/                      <--- doesn't work
body    JAPANESE      /[U+3040-U+30FF]/              <--- doesn't work
body    JAPANESE      /[\xe3\x81\x81-\xe3\x82\x96]/  <--- doesn't work
body    JAPANESE      /[\x{3040}-\x{30FF}]/          <--- doesn't work
Run Code Online (Sandbox Code Playgroud)

我真的不知道我在做什么了。我知道上面的一些没有意义......

指定这些范围的正确方法是什么?

spam spamassassin utf-8

5
推荐指数
1
解决办法
332
查看次数

使用 utf8 编码执行 bash 脚本的问题

我有一个用 utf8 编码的 bash 脚本。

在脚本中,我使用 sed 命令§作为分隔符。

现在,当我运行执行此脚本时会sed抱怨分隔符。

如果我使用普通字符作为 ex 的分隔符,@那么一切正常。

我已经在 putty[set utf8 in putty] 中查看了脚本,并且字符看起来很好。

还有来自locale命令的Linux 默认字符集显示

 LC_CSET=en_US.UTF-8 
Run Code Online (Sandbox Code Playgroud)

可能出了什么问题?

早些时候,我曾经对 shell 脚本使用 windows-1252 编码,这曾经有效。

bash utf-8 sed shell-scripting

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

如何更改 tomcat 服务器/容器的默认编码?

我的 webapp 的字符编码有问题,想知道如何更改 Linux 生产服务器上 tomcat 的默认编码,以匹配 Windows 上开发服务器的 cp 1252 编码(或至少是实验使用不同的编码,直到我能找到正确的编码)。

谢谢

tomcat utf-8 encoding eclipse

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

将 ASCII 百分比编码的位置重写为其 UTF-8 编码的等效项

例如,“å”可以编码为 /%E5 和 /%C3%A5 (utf-8)。我所有的文件名都是 UTF-8,所以 ASCII 变体返回 404。我希望这两个变体都能工作。

我尝试使用以下配置的变体将不正确的 URL 重写为正确的编码。我无法真正匹配这些位置,所以没有到达任何地方。

rewrite ^/%E5$ /%C3%A permanent;
rewrite ^/%25E5$ /%25C3%25A permanent;
location = /%E5 { return 301 /%C3%A; }
Run Code Online (Sandbox Code Playgroud)

我应该如何匹配这些百分比编码的位置?

rewrite nginx utf-8

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