标签: byte-order-mark

如何解决"session_regenerate_id():无法重新生成会话ID - 已发送的标头"

因为我已经将yii应用程序移动到另一个共享主机,并且应用程序是runnig ... index.php?r =使用登录凭据的站点/登录我得到了warnig:

session_regenerate_id(): Cannot regenerate session id - headers already sent
Run Code Online (Sandbox Code Playgroud)

actionLogin"的代码:

public function actionLogin($name = null )
{
    $model=new LoginForm;
    if ($name) $model->username = $name;
    if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
    {
        echo CActiveForm::validate($model);
        Yii::app()->end();
    }
    if(isset($_POST['LoginForm']))
    {
        $model->attributes=$_POST['LoginForm'];
        // validate user input and redirect to the previous page if valid
        if (headers_sent($filename, $linenum))
               {
            echo "Headers have been sent in {$filename} line number is {$linenum}\n"
            exit;
        }

        if($model->validate() && $model->login())
            $this->redirect(Yii::app()->user->returnUrl);
    }
    // display the login form …
Run Code Online (Sandbox Code Playgroud)

php byte-order-mark sessionid yii

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

保存 XML 时强制无 BOM

我正在保存一个外部工具使用的 XML 文件。
遗憾的是,该工具无法理解EF BB BF文件开头的编码 BOM(字节顺序标记:):

<?xml version="1.0" encoding="UTF-8"?>
...

00000000h: EF BB BF 3C 3F 78 6D 6C 20 76 65 72 73 69 6F 6E   <?xml version
00000010h: 3D 22 31 2E 30 22 20 65 6E 63 6F 64 69 6E 67 3D   ="1.0" encoding=
00000020h: 22 55 54 46 2D 38 22 3F 3E ...                    "UTF-8"?>
Run Code Online (Sandbox Code Playgroud)

我的代码:

XmlDocument doc = new XmlDocument();
// Stuff...
using (TextWriter sw = new StreamWriter(file, false, Encoding.UTF8)) { …
Run Code Online (Sandbox Code Playgroud)

c# xml byte-order-mark textwriter

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

使用 Java 删除 BOM 字符

我正在尝试使用 FileReader 读取文件并将它们写入一个单独的文件。
这些文件是 UTF-8 编码的,但不幸的是,其中一些文件仍然包含 BOM。
我试过的相关代码是这样的:

private final String UTF8_BOM = "\uFEFF";

 private String removeUTF8BOM(String s)
    {
        if (s.startsWith(UTF8_BOM))
        {
            s=s.replace(UTF8_BOM, "");
        }
        return s;
    }

    line=removeUTF8BOM(line);
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,BOM 没有被删除。有没有其他方法可以用 FileReader 做到这一点?我知道 BOMInputStream 应该可以工作,但我更愿意使用 FileReader 找到解决方案。

java byte-order-mark filereader

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

如何使用 BOM 输入流排除 BOM

我试图弄清楚如何在使用 Apache 给出的示例时简单地排除 BOM。我正在从内部存储读取文件并首先将其转换为String. 然后我将其转换为ByteArray这样我就得到了一个InputStream. 然后我检查BOMInputStreamBOM,因为我遇到了“意外令牌”错误。现在我不知道如何排除 BOM(如果有的话)。

代码:

StringBuffer fileContent = new StringBuffer("");
String temp = "";
int ch;
try{
    FileInputStream fis = ctx.openFileInput("dataxml");
try {
    while( (ch = fis.read()) != -1)
        fileContent.append((char)ch);
        temp = temp + Character.toString((char)ch);
} catch (IOException e) {
    e.printStackTrace();
}
} catch (FileNotFoundException e) {
    e.printStackTrace();
}


InputStream ins = new ByteArrayInputStream(temp.getBytes(StandardCharsets.UTF_8));
BOMInputStream bomIn = new BOMInputStream(ins);
if (bomIn.hasBOM()) {
    // has a UTF-8 …
Run Code Online (Sandbox Code Playgroud)

java xml android byte-order-mark xml-parsing

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

python3.5中不同编码的字符串长度

我在 python 中尝试这样做来获取字符串的长度(以字节为单位)。

>>> s = 'a'
>>> s.encode('utf-8')
b'a'
>>> s.encode('utf-16')
b'\xff\xfea\x00'
>>> s.encode('utf-32')
b'\xff\xfe\x00\x00a\x00\x00\x00'
>>> len(s.encode('utf-8'))
1
>>> len(s.encode('utf-16'))
4
>>> len(s.encode('utf-32'))
8
Run Code Online (Sandbox Code Playgroud)

utf-8使用一个字节来存储一个ascii字符,正如预期的那样,但是为什么utf-16使用4个字节呢?len() 到底测量什么?

python unicode byte-order-mark utf-8 utf-16

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

批处理脚本从文件中删除 BOM (ï¿)

我创建了一个批处理脚本,用于将 SQL 文件从文件夹复制到一个大 SQL 脚本中。问题是当我运行这个 SQL 脚本时,它出现错误

\n\n
\n

\'\' 附近的语法不正确

\n
\n\n

我将一个 SQL 脚本复制到 Notepad++ 中并将编码设置为 ANSI。我在发生错误的行上看到此符号 \xc3\xaf\xc2\xbb\xc2\xbf (BOM)。

\n\n

无论如何,我可以在批处理脚本中自动删除它吗?我不想每次运行此任务时都手动删除它。

\n\n

以下是我目前拥有的批处理脚本

\n\n
@echo off\n\nset "path2work=C:\\StoredProcedures"\ncd /d "%path2work%"\n\necho. > C:\\FinalScript\\AllScripts.sql\n\nfor %%a in (*.sql) do (\n\n    echo. >>"C:\\FinalScript\\AllScripts.sql"\n    echo GO >>"C:\\FinalScript\\AllScripts.sql"\n    type "%%a">>"C:\\FinalScript\\AllScripts.sql"\n    echo. >>"C:\\FinalScript\\AllScripts.sql"\n)\n
Run Code Online (Sandbox Code Playgroud)\n

byte-order-mark batch-file

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

Powershell XMLDocument保存为无BOM的UTF-8

我构建了一个 System.Xml.XmlDocument 类型的 XML 对象。

$scheme.gettype()
IsPublic IsSerial Name BaseType                                                         
-------- -------- ---- --------                                                         
True     False    XmlDocument System.Xml.XmlNode 
Run Code Online (Sandbox Code Playgroud)

我使用 save() 方法将其保存到文件中。

$scheme.save()
Run Code Online (Sandbox Code Playgroud)

这将以带有 BOM 的 UTF-8 格式保存文件。BOM 会导致其他脚本出现问题。

当我们在 Notepad++ 中打开 XML 文件并将其保存为 UTF-8(不含 BOM)时,其他脚本不会出现问题。所以我被要求保存没有 BOM 的脚本。

保存方法的 MS 文档指出:

编码属性的值取自 XmlDeclaration.Encoding 属性。如果 XmlDocument 没有 XmlDeclaration,或者 XmlDeclaration 没有编码属性,则保存的文档也不会具有编码属性。

XmlDeclaration 上的 MS 文档列出了 UTF-8、UTF-16 等的编码属性。它没有提到 BOM。

XmlDeclaration 是否具有省略 BOM 的编码属性?

附言。此行为在 Powershell 5 和 Powershell 7 中是相同的。

.net powershell byte-order-mark utf-8

4
推荐指数
2
解决办法
5137
查看次数

VS Code:如何在Mac中保存无BOM的UTF-8?

我目前正在开发一个项目,该项目在本地工作得很好,但一旦我将其上传到托管服务器的服务器上,它就会抛出错误。我的托管商说这是文件内 BOM 的错误。如何在 VS Code 或 Brackets 中删除它们?

php macos byte-order-mark utf-8 visual-studio-code

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

在Powershell中使用BOM读取XML文件

Powershell似乎是在使用unicode BOM的xml文件上进行抨击 - 代码:

$xml = [xml]{ get-content $filename }
Run Code Online (Sandbox Code Playgroud)

炸毁"根级数据无效".

有没有一个简单的方法来做到这一点,而不是摆弄文件的内容?

xml powershell byte-order-mark

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

VBA使用UTF-16输出到文件

我有一个非常复杂的问题很难解释.互联网上有很多关于这方面的讨论,但没有任何确定性.非常感谢任何帮助,或比我更好的解释.

本质上,我只是尝试使用带有VBA的UTF-16编写XML文件.

如果我这样做:

sXML = "<?xml version='1.0' encoding='utf-8'?>"
sXML = sXML & rest_of_xml_document
Print #iFile, sXML
Run Code Online (Sandbox Code Playgroud)

然后我得到一个有效的XML文件.但是,如果我将"encoding ="更改为"utf-16",我会从XML验证器中收到此错误:

Switch from current encoding to specified encoding not supported.

谷歌搜索告诉我,这意味着xml编码属性与文件使用的ACTUAL编码不同,因此我必须通过打开和打印命令创建utf-8文档.

如果我这样做:

With CreateObject("ADODB.Stream")
  .Type = 2
  .Charset = "utf-16"
  .Open
  .WriteText sXML
  .SaveToFile sFilename, 2
  .Close
End With
Run Code Online (Sandbox Code Playgroud)

然后我在文件的开头有一些时髦的字符(BOM),导致它无法通过XML验证.

如果我在Notepad ++中打开文件,删除BOM并将编码更改为"UCS-2",然后文件使用"utf-16"编码值进行验证(意味着UCS-2足够接近UTF-16无关紧要,或者XML能够Switch from current encoding在这两种类型之间.

我需要使用UTF-16,因为UTF-8不包括我正在导出的演示文稿中使用的所有字符.

问题:

如何让VBA像Notepad ++一样运行,创建一个UTF-16编码的文本文件,而没有可以填充XML数据的BOM?任何帮助非常感谢!

xml vba byte-order-mark utf-16

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