C# .NET Framework 1.1: フランス語の引用符を通常の一重引用符に置き換えようとしています。ほとんどの開発環境 (マシン) で動作していますが、システム テスト環境に移動すると、string cannot be of zero length
エラーが発生します。
これが私のコードです:
//replace French Quote with normal single Quote
fileColumnName = "date d’embauche";
fileColumnName = fileColumnName.Replace("’","'");
テスト環境での文字エンコーディングの問題でしょうか?
更新: 言い忘れました: これは COM+ コンポーネントです。COM+ に文字エンコーディング設定はありますか?
よくわかりませんでした。コードの大部分は次のとおりです。混乱を招く可能性があるため、明確にするために:
fileData
CSV ファイルへの OLEDB 接続によって設定されるデータ テーブル (System.Data.Table) です。次に、データベースに格納されている名前 (headerData) と比較される列名を取得します。
//#5: Invalid header row check
foreach(DataRow hrow in headerData.Rows)
{
columnNameEnglish = hrow["EnglishDisplayValue"].ToString().ToLower(); //get english column definition
columnNameFrench = hrow["FrenchDisplayValue"].ToString().ToLower(); //get french column definition
columnIndex = Convert.ToInt32(hrow["DataBaseValue"]); //get corresponding index
fileColumnName = fileData.Columns[columnIndex].ColumnName.ToLower();
//replace french Quote with normal Quote
fileColumnName = fileColumnName.Replace("’","'");
//check English
if(fileColumnName.IndexOf(columnNameEnglish) < 0)
{
//check French
if(fileColumnName.IndexOf(columnNameFrench) < 0)
{
//invalid row
errs.Add("81181");
break;
}
}
}