跳转至

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")

回到页面顶部