Photoshop图层乱码问题
一般快速解决
在本站的QQ群859299200
里下载PS_Shiftjis乱码修复.zip
,解压到某个空白文件夹,将要修复图层的psd
放入其中,并启动该exe
程序,会将当前目录中所有psd
文件的图层乱码问题解决。
1. “为什么!?”
根本原因
在使用 日语环境的软件 时,经常会遇到 乱码 问题,有时候甚至需要转区。其原因就在于,日语环境的Windows采用Shift-JIS编码,而我们平时用的中文版Windows是GBK编码,俩者 编码不统一 导致解码出错。
为什么解压文件时选了日语编码,结果还是乱码了?
解压时选择日语编码是非常明智的。只不过这个方法一般只能解决解压出来的 文件名乱码 问题,并不能解决程序内部字符乱码问题。
“但不是所有立绘都会乱码......”
是的,有的PSD立绘,即使是日本画师的作品、即使图层名是日语,但也没有乱码。这是因为较新的PSD文件(Photoshop 5.0)增加了Unicode图层名的功能(Unicode layer name),而Unicode在所有电脑上都通用。
2. “怎么办?”
在Photoshop中使用Jsx脚本
原理
该方法的原理就是单纯地更改图层名。源代码都在脚本中,没有加密。
如何使用
- 保证PS_ShiftjisToUtf8.jsx 和 PS_ShiftjisToUtf8 文件夹在同一目录。
- 在Ps将要改名字的图层编为一个组,选中这个组。
- 然后使用jsx脚本(将jsx脚本直接拖进ps或者在Ps的
文件-脚本
中使用) - 等待一段时间,即可看到图层重命名了。之后把组给去除就行了。
使用Python
也可以使用Python的psd-tools来更改PSD图层名。使用pip install psd-tools
安装psd-tools。
想想看:这两个示例会有什么不同?
示例一中直接将Shift-JIS转换为GBK,乍一看似乎没有问题,而且代码很简洁。但是,Shift-JIS中存在GBK中没有的字符,比如エビフライ这样半宽的假名。在转换这些字符时,示例一会 报错。而示例二直接使用Unicode,避免了这个问题。
示例一:
Python
from psd_tools import PSDImage
filename = "example.psd"
psd = PSDImage.open(filename, encoding="Shift-JIS")
psd.save(f'GBK_{filename}', encoding="GBK")
示例二:
Python
from psd_tools import PSDImage
from psd_tools.constants import Tag
def writeBlock(group):
for layer in group:
# 直接更改Unicode图层名
# Directly set Unicode layer name
layer._record.tagged_blocks.set_data(Tag.UNICODE_LAYER_NAME, layer.name)
if layer.is_group():
writeBlock(layer)
filename = "example.psd"
psd = PSDImage.open(filename, encoding="Shift-JIS")
writeBlock(psd)
psd.save(f'Unicode_{filename}', encoding="Shift-JIS")