diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 0232e222c..0bfec558d 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -27,6 +27,7 @@ import ( "strconv" "strings" "time" + "unicode/utf8" "github.com/88250/gulu" "github.com/88250/lute/ast" @@ -2745,7 +2746,7 @@ func (tx *Transaction) setAttributeViewName(operation *Operation) (err error) { attrView.Name = strings.TrimSpace(operation.Data.(string)) attrView.Name = strings.ReplaceAll(attrView.Name, "\n", " ") - if 512 < len(attrView.Name) { + if 512 < utf8.RuneCountInString(attrView.Name) { attrView.Name = gulu.Str.SubStr(attrView.Name, 512) } err = av.SaveAttributeView(attrView) diff --git a/kernel/model/attribute_view_fix.go b/kernel/model/attribute_view_fix.go index fa0509859..efe883415 100644 --- a/kernel/model/attribute_view_fix.go +++ b/kernel/model/attribute_view_fix.go @@ -101,9 +101,12 @@ func checkAttrView(attrView *av.AttributeView, view *av.View) { } } + if strings.Contains(attrView.Name, "\n") { + attrView.Name = strings.ReplaceAll(attrView.Name, "\n", " ") + } + // 截断超长的数据库标题 Limit the database title to 512 characters https://github.com/siyuan-note/siyuan/issues/15459 if 512 < utf8.RuneCountInString(attrView.Name) { - attrView.Name = strings.ReplaceAll(attrView.Name, "\n", " ") attrView.Name = gulu.Str.SubStr(attrView.Name, 512) changed = true }